【发布时间】:2010-09-15 18:20:39
【问题描述】:
对最近一篇文章的回答(在 C# 中模仿 times() Ruby 方法的机会吗?)在用法示例中使用 => 运算符。这个运营商是做什么的?我在我的 C# 书中找不到它,而且很难在网上搜索到这样的符号。 (我没找到。)
【问题讨论】:
对最近一篇文章的回答(在 C# 中模仿 times() Ruby 方法的机会吗?)在用法示例中使用 => 运算符。这个运营商是做什么的?我在我的 C# 书中找不到它,而且很难在网上搜索到这样的符号。 (我没找到。)
【问题讨论】:
它本身并不是一个真正的运算符,它是 lambda 表达式语法的一部分。特别是 => 是将参数与 lambda 表达式的主体分开的位。
您的书是否涵盖 C# 3.0?如果不是,它将不包含 lambda 表达式。如果是这样,它真的应该覆盖它们!希望使用正确的术语,您将能够在 TOC 或索引中找到它。
编辑:更多信息:lambda 表达式是一种语法糖,用于创建委托的实例或表达式树(后者是 .NET 3.5 的新内容)。 Lambda 表达式几乎完全取代了匿名方法(来自 C# 2.0),尽管它们不像匿名方法那样支持“我不关心参数”的概念。
【讨论】:
"I don't care about the parameters" in the way that anonymous methods do.是什么意思吗?谢谢!
EventHandler,您可以使用 delegate { Console.WriteLine("Called"); } 而不需要指定参数列表。这可以转换为返回类型为 void 和所有“in”参数的 any 委托类型。
这将是一个 lambda 表达式:
http://msdn.microsoft.com/en-us/library/bb397687.aspx
这里有一个例子:
MyControl.OnMouseDown += (sender, e) =>
{
// Do something in the mouse down event
};
在这里,我创建了一个 lambda 表达式事件委托。它基本上使我不必在类中为其创建单独的函数。
【讨论】:
lambda 表达式是一个匿名函数,可以包含表达式和语句,可用于创建委托或表达式树类型。
所有 lambda 表达式都使用 lambda 运算符 =>,读作“goes to”。 lambda 运算符的左侧指定输入参数(如果有),右侧保存表达式或语句块
【讨论】:
【讨论】: