我是从Wrox的阅读可空类型和运算符和整个下面的语句来:可空类型和运算符
当比较可空类型,如果只有一个操作数为空值,比较将永远等于错误。这意味着你不能仅仅因为它的对立是假的而假定条件是真的。
现在,我得到了第一条语句的含义,但没有得到第二条语句。 请您详细说明一下吗?
我是从Wrox的阅读可空类型和运算符和整个下面的语句来:可空类型和运算符
当比较可空类型,如果只有一个操作数为空值,比较将永远等于错误。这意味着你不能仅仅因为它的对立是假的而假定条件是真的。
现在,我得到了第一条语句的含义,但没有得到第二条语句。 请您详细说明一下吗?
看起来好像引用是说任何与null类型的比较都会返回null,而不管操作数如何。
所以像(null != 5)
会返回false
,其中(null == 5)
也将返回false。
现在,有趣的是,当我跑的程序,null != 5
返回真正,所以虽然我不能验证C#2.0中这句话,这绝对不是真的再在C#4.0 +
这是示例代码我使用:
int? a = null;
int? b = 5;
if (a != b)
{
Console.WriteLine("A != B");
}
if (a == b)
{
Console.WriteLine("A == B");
}
这是输出
A!= B
按任意键继续。 。 。
这报价是错误的,MSDN的官方源:http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
当您执行可空类型的比较,如果一个 可空类型的值是零,另一种是不,所有比较 评估为假除了!=(不等于)。
第二条语句只是意味着一个比较和其相对的可以是两个假,例如> = b和a < b都是假的。
这是逻辑。空类型意味着一个未知值。现在尝试计算5 < null,5 < = null,5 == null,5 > = null,5 > null。你无法准确计算出其中的任何一个,它们也不是真的或假的,它们是未知的,但是错误比真实更有意义。例外是5!= null。一个确切的数字不是未知的,所以它更有意义,它是真实的而不是假的。所以==和!=是彼此相反的,这很容易,但是你不能说更少的比较。这是他们制作C#/ .NET时的设计选择。在另一方面
SQL得到它完全正确,我认为有三值逻辑,在这里看到:http://en.wikipedia.org/wiki/Null_%28SQL%29#Comparisons_with_NULL_and_the_three-valued_logic_.283VL.29
你在哪里读书呢?它在哪里我们可以去看看它? –
你可以肯定地认为,如果一个条件的相反是错误的,那就是真的 - 这就是相反的意思。 –
不,它来自专业C#4和.NET 4 –