[英]Is there any difference between the null conditional operator and a dedicated null check?
例如:
我有一个可能是也可能不是 null 的实例。
我想获得其布尔成员之一的价值。
我写了一些像这样的糟糕代码:
var someVar = (someInstance != null) ? someInstance.boolValue : false;
ReSharper 建议了另外两种方法来做同样的事情:
var someVar = someInstance?.boolValue ?? false;
var someVar = (someInstance != null) && someInstance.boolValue;
是否有任何技术原因更喜欢它们中的任何一个,或者它们最终会做完全相同的事情?
替代方法不是返回null
,而是创建该类型的“默认”实例。 可以很好地适合你有默认值的场景
public class MyClass
{
public static readonly MyClass Default = new MyClass(false);
public bool HaveSomething { get; }
public MyClass(bool haveIt) => HaveSomething = haveIt;
}
// Usage
var someThing = LoadThing(); // Never returns null
if (someThing.HaveSomething)
{
// some action
}
目标是在加载或尝试创建实例时仅检查一次null
,然后您可以从应用程序的 rest 中删除 null 检查
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.