Nullable< T>有许多语法糖.像那些:
int? parsed to Nullable<int> int? x = null if (x != null) // Parsed to if (x.HasValue) x = 56; // Parsed to x.Value = 56;
和更多.
为什么条件与Nullable不起作用?
if (x) {}
它得到Complier错误,说无法转换Nullable< bool>布尔.
为什么没有解析if(x.HasValue&& x.Value == true)或类似的东西?
这是Nullable< bool>最明显的用法.
@H_404_15@解决方法
It’s the most obvIoUs usage for
Nullable<bool>
你的“明显”行为导致许多不明显的行为.
如果
if(x)
当x为null时,被视为false,那么应该发生什么
if(!x)
?当x为null时,x也为null,因此也将被视为false!你不能用反转反转条件的行为似乎并不奇怪吗?
关于什么
if (x | !x)
当然应该总是如此,但如果x为null,则整个表达式为null,因此为false.
最好通过简单地将它们全部视为非法来避免这些不明显的情况. C#是“让用户明确表达他们的意思”语言.
我相信VB有你想要的行为.如果这是你喜欢的东西,你可以考虑切换到VB.
@H_404_15@ @H_404_15@ 原文链接:https://www.f2er.com/csharp/98486.html