我一直在阅读Moq的源代码,我遇到了以下单元测试:
Assert.Throws<ArgumentOutOfRangeException>(() => Times.AtLeast(0));
Run Code Online (Sandbox Code Playgroud)
而对于我的生活,我不记得究竟是什么()=>.我认为它与匿名方法或lambda有关.而且我确定我知道它的作用,我现在还记不清了......
有人能给我一个快速回答一个漂亮的noobish问题吗?
Dan*_*ker 13
在"lambda"中搜索StackOverflow.
特别:
() => Console.WriteLine("Hi!");
Run Code Online (Sandbox Code Playgroud)
这意味着"一个不带参数并返回void的方法,当你调用它时,它会将消息写入控制台."
您可以将其存储在Action变量中:
Action a = () => Console.WriteLine("Hi!");
Run Code Online (Sandbox Code Playgroud)
然后你可以称之为:
a();
Run Code Online (Sandbox Code Playgroud)
Jim*_*mmy 12
()=>是一个nullary lambda表达式.它表示一个传递给assert.Throws的匿名函数,并在该函数内部的某处调用.
void DoThisTwice(Action a) {
a();
a();
}
Action printHello = () => Console.Write("Hello ");
DoThisTwice(printHello);
// prints "Hello Hello "
Run Code Online (Sandbox Code Playgroud)
这是一个lambda表达式.最常见的语法是使用参数,因此周围不需要括号:
n => Times.AtLeast(n)
Run Code Online (Sandbox Code Playgroud)
如果参数的数量不是一个,则需要括号:
(n, m) => Times.AtLeast(n + m)
Run Code Online (Sandbox Code Playgroud)
如果参数为零,则会在空参数列表周围使用括号获得稍微笨拙的语法:
() => Times.AtLeast(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |