c#中最短的空值检查

Dav*_*ter 4 javascript c# null

c#中有没有更短的方法来写这个:

if(myobject!=null){

}
Run Code Online (Sandbox Code Playgroud)

JavaScript中我们可以这样做:

if(myobject){

}
Run Code Online (Sandbox Code Playgroud)

免责声明:我知道这在JavaScript中也会匹配'true'.这只能用于应该是特定类型对象的变量.

我发现了一些类似的问题,但他们提出的问题略有不同:

C#检查空的最短路径,如果没有则分配另一个值

检查对象是否为空的最佳和最快方法

如何确定变量是"未定义"还是"空"?

Dmi*_*nko 12

您可以通过运算符在C#中获得相同的语法:

  public class MyClass {
    ...
    // True if instance is not null, false otherwise
    public static implicit operator Boolean(MyClass value) {
      return !Object.ReferenceEquals(null, value);  
    }   
  }


....

  MyClass myobject = new MyClass();
  ...
  if (myobject) { // <- Same as in JavaScript
    ...
  }
Run Code Online (Sandbox Code Playgroud)


Ere*_*mez 8

C#语言哲学与JavaScript完全不同.C#通常会强迫您更加明确某些事情以防止一些常见的编程错误(我确信这也有助于简化编译器设计和测试).

如果C#允许这样的隐式转换为boolean,那么你更有可能遇到这样的编程错误:

if(myobject = otherObject)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

您在哪里进行了分配而不是相等检查.通常C#可以防止这样的错误(所以虽然Dmitry的回答很聪明,但我建议不要这样做).