这与比较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");
}
现在的问题是两种比较值的方式之间是否存在任何基本差异(即两者都相同)。
寻找有利的回复。
由于
答案 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
语句。这相当于if
,true
条件匹配。
如果您尝试将if
分配给常量i
,则无法进行编译,因此建议您按顺序执行此操作(例如1
)
这在C#中不是必需的,并且在您的示例中,建议的做法是调用1 == i
,因为字符串具有......两个...从语义角度来看的默认值。
答案 1 :(得分:1)
当您使用==
(比较)而不是=
(分配)时,反向比较会保护您免受错误的影响。但如果你这样做,编纂者也会警告你。