最短的空检查在C#

有没有更简单的方式来写在C#中

if(myobject!=null){

}

JavaScript中,我们可以这样做:

if(myobject){

}

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

我发现了一些类似的问题,但他们要求稍微不同的事情:

C#最短路如果没有,则检查空值并指定另一个值

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

如何确定变量是'undefined'还是'null'?


您可以通过运算符在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
    ...
  }

C#的语言理念与JavaScript的理念完全不同。 C#通常会强制你对某些事物更加明确,以防止一些常见的编程错误(我相信这也有助于简化编译器设计和测试)。

如果C#允许将这种隐式转换为布尔型,那么您很可能会遇到像这样的编程错误:

if(myobject = otherObject)
{
   ...
}

你做了一个任务而不是平等检查。 通常情况下,C#可以防止这种错误(所以虽然德米特里的答案很聪明,但我建议不要这样做)。


用过的 ?? 运算符https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operator

 var myobject = notNullValue ?? nullValue;
链接地址: http://www.djcxy.com/p/76363.html

上一篇: Shortest null check in c#

下一篇: Checking for null or undefined