Jon*_*eet 19
是的,您可以使用is具有常量模式的运算符null来检查引用(或可为空的值类型值)是否为null.
实际上,在C#7中我会说使用is null是最常用的测试空值的方法,因为它不使用任何用户定义的运算符.考虑一下:
string x = GetStringFromSomewhere();
if (x == null) { } // Option 1
if (x is null) { } // Option 2
Run Code Online (Sandbox Code Playgroud)
这里,选项1将调用==定义的运算符重载string.虽然这应该做你想要的(我希望JIT编译器会非常重视它),但它并不像你特别想要那样 - 你只想测试值x是否为空引用.这正是选项2所做的.
所以,是的,如果您没有执行奇怪自定义比较的类型,则可以使用is null所有空检查.可以写一个这样的类,并给出不同的结果,但这几乎总是一个设计(或实现)问题.x == nullx is null
没有一个对象是"空"的概念 - 事实上它并不是空的对象.暂时不考虑可以为空的值类型,它是一个null 的引用,而不是一个对象 - null值表示没有对象.值得在您的脑海中仔细区分对象和引用.
一些特定的对象类型具有"空"的概念 - 例如,字符串可以是空的,或者是集合 - 但是这些类型具有测试空虚的特定方式.对象没有一般概念是空的.
| 归档时间: |
|
| 查看次数: |
5484 次 |
| 最近记录: |