Pra*_*sad 105 c# lambda c#-4.0
lambda表达式_=> expr意味着什么?
_作为lambda输入的目的是什么?
例:
int count = 0;
list.ForEach(_ => count += 1);
Run Code Online (Sandbox Code Playgroud)
Cha*_*ion 78
这是您不关心参数时使用的约定.
ang*_*son 38
它是一个参数名称,虽然不是一个有用的名称,但它是通常使用的(通过某些约定)当你需要指定表达式有一个参数以便让代码编译时,但是你并不在乎关于它,所以你只是忽略它.
它基本上利用了C#中合法标识符构成的语法,并且由于标识符可以以下划线开头,并且不包含任何其他内容,因此它只是一个参数名称.
你可以很容易地写出来:
var _ = 10;
Run Code Online (Sandbox Code Playgroud)
小智 6
我还第二次使用了_ => _.method()单行方法调用lambda,因为它减少了指令的认知分量。特别是在使用泛型时,编写时x => x.method()只是添加了“这是什么'x'?它是空间坐标吗?”的瞬间考虑。
考虑以下情况:
Initialize<Client> ( _=>_.Init() );
与泛型调用一起使用时,下划线在这种情况下用作“旁路符号”。它避免了冗余,定义了参数的类型是显而易见的,并且可以从用法中推断出-就像您使用'var'防止重复类型声明时一样。client=>client.Init()在这里写只会增加指令的长度而不会增加任何意义。
显然,这不适用于要传递给方法的参数,该参数应以描述性方式命名。例如。:Do( id=>Log(id) );
使用代码块而不是单行代码时,方法调用的单下划线参数用法几乎是不合理的,因为lambda标识符已从其泛型定义中断开。通常,当要重复使用同一标识符时,请为其提供描述性名称。
最重要的是,冗长仅能为消除歧义辩解,尤其是对于lambda而言,lambdas最初是为了简化匿名代表的创建而创建的。无论如何,都应使用常识,以兼顾易读性和简洁性。如果该符号只是真实功能的“钩子”,那么一个字符标识符就可以了。对于For循环以及使用“ i”和“ j”字母作为索引器的情况就是这样。
| 归档时间: |
|
| 查看次数: |
20210 次 |
| 最近记录: |