【发布时间】:2015-11-15 13:24:27
【问题描述】:
我有以下构造:
MyType y = x.HasValue ? f(x) : null;
我知道如果f 是x 的成员,可以使用一个简单的模式:MyType y = x.?f();
有没有类似的方法可以在不改变f的定义的情况下简化上面的代码?
【问题讨论】:
-
当取参数为空时,使 f 返回空。 ;)
-
我更新了问题。
-
看起来像Maybe Monad
-
您当前的代码是清晰的。你真的想让保存几个字符变得不那么不稳定吗?如果是,您可以尝试扩展方法。比如说,
int? i = null; int? = i.Call(f);使用扩展方法static R Call<P>(this P? parameter, Func<P, R> func) { if (parameter.HasValue) return func(parameter.Value); else return default(R); }。 -
我一直在寻找更原生于 C# 的东西,以避免扩展方法和其他任何需要添加更多代码的东西。我想没有必要做这样的事情。
标签: c# ternary-operator c#-6.0 null-conditional-operator