在VB.NET中,会发生以下情况:
Dim x As System.Nullable(Of Decimal) = Nothing
Dim y As System.Nullable(Of Decimal) = Nothing
y = 5
If x <> y Then
Console.WriteLine("true")
Else
Console.WriteLine("false") '' <-- I got this. Why?
End If
但是在C#中会发生这种情况:
decimal? x = default(decimal?);
decimal? y = default(decimal?);
y = 5;
if (x != y)
{
Debug.WriteLine("true"); // <-- I got this -- I'm with you, C# :)
}
else
{
Debug.WriteLine("false");
}
为什么有区别?
default(decimal?)
将返回0,而不是null
。
null
If
条件语句不需要评估为布尔 ... uuuugh编辑:所以Nothing <> Anything = Nothing
这会导致If
以负/其他路线。