当检查一个整数是否与当前数字相同或更高时.. 我输入:
if (5 => 6) { //Bla }
但是它显示为错误。为什么?难道不是完全相同的吗?
if (5 >= 6) { //Bla }
它不起作用的原因是因为=>
并不等同于>=
。
=>
在lambda表达式中使用,例如:
(int x, string s) => s.Length > x
我同意这很令人烦恼。在使用lambda表达式之前,有时我会搞错它们。现在我总是知道(=>
)是lambda表达式,而另一个(>=
)则是大于等于符号。
>=
而不是=>
。>
符号排在第一位是有道理的。=>
用于Lambda表达式。因为 =>
主要用于 lambda 表达式:
Action<object> print = o => Console.WriteLine(o);
print(123);
=>
就会被发音成这样。=<
和 >=
,因此“你不说‘等于或小于’”在至少一个奇怪的语言中失败了。 :) - sarnold为什么要这样呢?=!和!=不同,这是语言语法的一部分。
在这种特定情况下,=>也用于 lambda 表达式,因此它有另一个目的。
因为在C#中,=>
代表Lambda表达式。
>=
代表大于或等于,这一点你已经知道了。
语法规定,在比较两个实体时必须使用>=
。另外,你还可以注意到,即使它们之间有一个空格也会导致错误-> =
。
@Barry的回答可能是这里最有见地的。一个运算符并不意味着一个字符;事实上,>
和=
结合形成>=
并不意味着它既执行>
又执行=
;它只执行单个操作。定义该操作的运算符包括两个其他类似操作的字符是无关紧要的。
我想如果你真的想这样做,你可以覆盖它,使得>=
和=>
以相同的方式工作——C#确实允许运算符重载。但这是一个坏主意,因为正如其他人已经说过的那样,=>
实际上正在用于其他目的。