我一直在想弄清楚为什么lambda表达式对我来说并不直观.我怀疑它的一部分可能是因为当我浏览代码时,为了我自己的清晰度,我有时会在内部将其翻译成我的母语.例如:
endDate.Value = someNullableDate ?? (object)DBNull.Value;
// I could read as:
set endDate to someNullableDate or, if null, to (object)dbNull
Run Code Online (Sandbox Code Playgroud)
另一种语言的例子:
for(int count = 0; count >= 42; count++) {
cout << "Count is " << count << endl;
}
// May read as:
from an integer "count" as zero to 42 inclusive, display "Count is " and then the integer.
Run Code Online (Sandbox Code Playgroud)
那么如何读取lambda表达式:
var myList = new List<String>(/* various string values */);
var foo = myList.Select(s => s.Trim()).ToList(); //?
Run Code Online (Sandbox Code Playgroud)
Jam*_*xon 10
我会读到这个:
从myList单独选择每个项目到变量s,使用s,对其应用Trim(),一旦完成myList中的所有项目,将整个项目转换为列表.
鉴于 LINQ 通常仅适用于 IEnumerable 对象,您可以将其读s =>作“for every s in the IEnumerable”。
更新: 五年后重新审视这个答案,我对此深感不满意。就我个人而言,现在我发现自己将其视为“映射到”或者我看到了“这样”,这也是相关的,具体取决于具体情况。