C# 为什么简写lambda表达式只在某些情况下有效?
例如,这两条语句都检查字符串的每个字符,看它是否是数字C# 为什么简写lambda表达式只在某些情况下有效?,c#,linq,lambda,C#,Linq,Lambda,例如,这两条语句都检查字符串的每个字符,看它是否是数字 “abc3def".Any(c => char.IsDigit(c)); "abc3def".Any(char.IsDigit); 第二个语句是如何工作的,我还可以在哪里使用这样的速记表达式。这似乎并不是在所有情况下都有效。 我没有遇到任何其他示例?在c#中,如果方法组(例如,char.IsDigit)的签名匹配,编译器可以隐式地将其转换为委托。这被称为“方法组转换”(你可以用谷歌搜索) 在本例中为字符串。任何都有一个重载,该重
“abc3def".Any(c => char.IsDigit(c));
"abc3def".Any(char.IsDigit);
第二个语句是如何工作的,我还可以在哪里使用这样的速记表达式。这似乎并不是在所有情况下都有效。
我没有遇到任何其他示例?在c#中,如果方法组(例如,char.IsDigit
)的签名匹配,编译器可以隐式地将其转换为委托。这被称为“方法组转换”(你可以用谷歌搜索)
在本例中为
字符串。任何都有一个重载,该重载接受Func
(一个接受char
并返回bool
)的char.IsDigit
与该签名匹配(它接受char
并返回bool
)。因此,编译器能够隐式地将char.IsDigit
转换为Func
什么示例不起作用?我不知道C#,但第二个看起来不像“速记lambda”,它看起来只是引用了这个方法。