我在Jon Skeet的回答中读到了这条有趣的行here。
有趣的是,他主张使用代表:
Log.Info("I did something: {0}", () => action.GenerateDescription());
问题是,这是什么()=>操作员,我想知道?我尝试使用谷歌搜索,但由于它是由符号组成的谷歌,实际上并没有多大帮助。我在这里尴尬地想念一些东西吗?
答案 0 :(得分:54)
这引入了一个没有参数的lambda函数(匿名委托),它等同于并且基本上是简写:
delegate void () { return action.GenerateDescription(); }
您还可以添加参数:
(a, b) => a + b
这大致相当于:
delegate int (int a, int b) { return a + b; }
答案 1 :(得分:8)
=>
这是lambda运算符。当我们没有任何输入参数时,我们只需在lambda运算符之前使用圆括号()
。
语法:
(input parameters) => expression
答案 2 :(得分:3)
这是lambda表达式的示例,您可以了解更多here。
答案 3 :(得分:2)
创建指定方法的匿名委托。
或许,在您的情况下,它将是Func<string>
答案 4 :(得分:1)
这是将没有参数的匿名委托作为lambda表达式传递的方法。
与.NET 2.0相似
Log.Info("I did something: {0}", delegate()
{
return action.GenerateDescription();
});