Lambda表示法和逻辑比较

awr*_*ley 0 c# syntax

lambda表示法

x => x.MyProperty
Run Code Online (Sandbox Code Playgroud)

一些人很容易混淆大于或等于.即

if (x => y) ...
Run Code Online (Sandbox Code Playgroud)

问题是:编译器是否混淆了这些?即,如果采用大于或等于的约定总是编码为:

if (x >= y) ...
Run Code Online (Sandbox Code Playgroud)

我想编译器可以根据上下文来区分这两者,但是什么是"最佳实践"?

关于SO的问题

ASP.NET MVC2表中的复选框

有点表明很容易弄错.

编辑:

鉴于在这场风暴中酝酿的小风暴,以下内容可能会澄清.

我问了这个问题,因为我回答了一个问题,那个人错误地输入了lambda表示法.我指出了他的错字,他接受了我的回答.上面的问题有一个链接.

然后这个问题让我感到困惑.我一直使用> =没有很好的理由,但我确信我看过使用其他符号的代码.有时候,你有一些假设,你不会想到质疑.它可能来自我的VBA时代,但是我仍然坚信,我已经看到了编译,运行和使用=>的代码,而不是比较.就这样吧.我很抱歉没有"解雇VS",但我一直在Sitefinity工作一整天没有安装VS的办公室.没有任何借口,我授予你.

但请注意,C#中的lambda表达式只有... .NET 2?还是.NET 3.5.鉴于我从1.0版本开始使用C#,问题是错误的,但不是那么荒谬.

我也认为SO的严格规则很重要,因为它们产生了原始的问答.但是有不同的方法来应用这些规则.自9月中旬以来,我一直认真使用SO,所以我认为最好在不好的问题上发出警告,而不是在第一次机会时猛拉膝盖.这就是SO所鼓励的:发表评论而不仅仅是触发快乐的标记.你让提问者有机会发现他们的错误并从系统中删除一个毫无意义的问题.因为一旦答案和投票涌入,问题就无法被删除.

咆哮结束.

SLa*_*aks 15

if (x => y) 是无效的代码.

比较运算符(x >= yx <= y)必须具有符号<>前面=.

因此,编译器(或面向细节的人)不可能混淆它们.

  • 它完全有效*语法*.在语义分析期间发生错误,而不是语法或词法分析,因为lambda表达式无法转换为bool. (2认同)