可能重复:
C#可以将值类型与null进行比较
使用TimeSpan考虑以下代码,TimeSpan是一个结构:
// will not compile - illegal
TimeSpan ts = null;
Run Code Online (Sandbox Code Playgroud)
但是,以下代码确实编译并且是合法的,尽管表达式始终为false:
if (ts == null)
Console.WriteLine("this line will never be hit");
Run Code Online (Sandbox Code Playgroud)
有人能告诉我为什么将结构设置为NULL是无效的,但可以将它与一个进行比较吗?
它仍然合法,因为你可以==
为struct
s 重载运算符.
struct AmNull {
public static bool operator ==(AmNull a, object b) {
return b == null;
}
public static bool operator !=(AmNull a, object b) {
return b != null;
}
}
...
Console.WriteLine(new AmNull() == null); // True
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1966 次 |
最近记录: |