C#中正向和反向比较的区别

时间:2010-12-15 03:02:28

标签: c# comparison

这与比较C#中的值有关。

基本上默认情况下,在C#到日期我只使用前向比较如下:

string value1 = "";

if (value1 == null) 
{ 
    Console.WriteLine("True"); 
} 
else 
{ 
    Console.WriteLine("False"); 
} 
在互联网上的某个地方,我遇到了一个链接,据说在比较C#中的值时,我们应该更喜欢反向比较:

string value1 = "";

if (null == value1)  
{ 
    Console.WriteLine("True"); 
} 
else 
{ 
    Console.WriteLine("False"); 
} 

现在的问题是两种比较值的方式之间是否存在任何基本差异(即两者都相同)。

寻找有利的回复。

由于

2 个答案:

答案 0 :(得分:5)

这是语言的宿醉,其中值被隐式转换为布尔类型。

在大多数情况下,非null或非0的任何内容都将被视为true,否则等同于false。这意味着任何常量的赋值始终为true

这里需要记住的是赋值函数返回赋值的方式,与5 2+3的结果相同,{{1} }也返回myInt = 5

因此,建议您检查变量常量。在这种情况下,5示例实际上可能有点人为,因为在大多数语言中,它会返回为假。

举个例子:

null

if(i = 1) { printf("Always out\n"); } else { printf("Never prints\n"); } 被赋予i的值,然后将赋值1的值返回给1语句。这相当于iftrue条件匹配。

如果您尝试将if分配给常量i,则无法进行编译,因此建议您按顺序执行此操作(例如1

这在C#中不是必需的,并且在您的示例中,建议的做法是调用1 == i,因为字符串具有......两个...从语义角度来看的默认值。

答案 1 :(得分:1)

当您使用==(比较)而不是=(分配)时,反向比较会保护您免受错误的影响。但如果你这样做,编纂者也会警告你。