为什么 >= 能用但 => 却不行?

4

当检查一个整数是否与当前数字相同或更高时.. 我输入:

if (5 => 6) { //Bla } 

但是它显示为错误。为什么?难道不是完全相同的吗?
if (5 >= 6) { //Bla } 

3
这仅仅不是正确的语法。 - RoflcoptrException
2
在几乎所有编程语言中,使用的是 >= 和 <= 运算符,这也被数学家视为正确的格式。 - Security Hound
10个回答

14

它不起作用的原因是因为=>并不等同于>=

=>lambda表达式中使用,例如:

(int x, string s) => s.Length > x

我同意这很令人烦恼。在使用lambda表达式之前,有时我会搞错它们。现在我总是知道(=>)是lambda表达式,而另一个(>=)则是大于等于符号。


我一直做错了,因为我像BoltClock的评论中所说的那样思考。 - Theun Arbeider
C#的lambda语法是在花括号语言中使用">="作为“大于或等于”运算符数十年之后才出现的。 - Barry

11
因为操作符是>=而不是=>
语言的编写者可以选择任何一种语法,但必须选择一个。两个具有相同含义的操作符最多会引起混淆。
然而,操作符被读作“大于或等于”,所以让>符号排在第一位是有道理的。
此外,现在=>用于Lambda表达式。

6

因为 => 主要用于 lambda 表达式:

Action<object> print = o => Console.WriteLine(o);
print(123);

此外,你不会说“等于或大于”,否则 => 就会被发音成这样。

虽然不相关,但 Erlang 选择了 =<>=,因此“你不说‘等于或小于’”在至少一个奇怪的语言中失败了。 :) - sarnold
@sarnold:好吧,你抓住我了 :P - BoltClock
在我看来,你首先要检查一个数字是否与你想要比较的数字相同,然后再检查它是高还是低。所以用 => 和 =< 。因为使用基础的理解来检查一个数字是否相同更容易。当你需要检查一个数字是否更大或更小时,你必须从基数开始计算上下。因此,我想知道为什么 =< 和 => 不起作用。你提到 => 是用于 Lambda 表达式的答案让我接受这个答案,因为你是第一个提到它的人! - Theun Arbeider
@Levisaxos:不,giddy先出现了 :) - BoltClock
接受giddy作为答案,因为你的诚实而获得点赞 :) - Theun Arbeider

6
混淆在这里的是您假设">="是两个操作符连在一起。实际上,它只是一个由两个字符组成的操作符,和许多其他操作符一样(例如+=、*=、-=等)。

4

为什么要这样呢?=!和!=不同,这是语言语法的一部分。

在这种特定情况下,=>也用于 lambda 表达式,因此它有另一个目的。


2
因为它被称为大于或等于,而不是等于或大于。简单易懂,对吧?

1
在C#中,大于号或小于号必须出现在等号之前。这只是语言的语法的一部分。

1

因为在C#中,=>代表Lambda表达式。

>=代表大于或等于,这一点你已经知道了。

语法规定,在比较两个实体时必须使用>=。另外,你还可以注意到,即使它们之间有一个空格也会导致错误-> =


0
不,这不是一样的。在C#中正确的运算符是>=用于比较,=>用于Lambda表达式。

0

@Barry的回答可能是这里最有见地的。一个运算符并不意味着一个字符;事实上,>=结合形成>=并不意味着它既执行>又执行=;它只执行单个操作。定义该操作的运算符包括两个其他类似操作的字符是无关紧要的。

我想如果你真的想这样做,你可以覆盖它,使得>==>以相同的方式工作——C#确实允许运算符重载。但这是一个坏主意,因为正如其他人已经说过的那样,=>实际上正在用于其他目的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接