【问题标题】:What does the C# operator => mean?C# 运算符 => 是什么意思?
【发布时间】:2010-09-15 18:20:39
【问题描述】:

对最近一篇文章的回答(在 C# 中模仿 times() Ruby 方法的机会吗?)在用法示例中使用 => 运算符。这个运营商是做什么的?我在我的 C# 书中找不到它,而且很难在网上搜索到这样的符号。 (我没找到。)

【问题讨论】:

    标签: c# operators


    【解决方案1】:

    它本身并不是一个真正的运算符,它是 lambda 表达式语法的一部分。特别是 => 是将参数与 lambda 表达式的主体分开的位。

    您的书是否涵盖 C# 3.0?如果不是,它将不包含 lambda 表达式。如果是这样,它真的应该覆盖它们!希望使用正确的术语,您将能够在 TOC 或索引中找到它。

    编辑:更多信息:lambda 表达式是一种语法糖,用于创建委托的实例表达式树(后者是 .NET 3.5 的新内容)。 Lambda 表达式几乎完全取代了匿名方法(来自 C# 2.0),尽管它们不像匿名方法那样支持“我不关心参数”的概念。

    【讨论】:

    • 啊,我的书没有涉及C#3.0,难怪找不到!
    • 我能问你"I don't care about the parameters" in the way that anonymous methods do.是什么意思吗?谢谢!
    • @xanatos:例如,要创建一个不使用 sender 或 args 的 EventHandler,您可以使用 delegate { Console.WriteLine("Called"); } 而不需要指定参数列表。这可以转换为返回类型为 void 和所有“in”参数的 any 委托类型。
    【解决方案2】:

    这将是一个 lambda 表达式:

    http://msdn.microsoft.com/en-us/library/bb397687.aspx

    这里有一个例子:

    MyControl.OnMouseDown += (sender, e) =>
    {
      // Do something in the mouse down event
    };
    

    在这里,我创建了一个 lambda 表达式事件委托。它基本上使我不必在类中为其创建单独的函数。

    【讨论】:

      【解决方案3】:

      lambda 表达式是一个匿名函数,可以包含表达式和语句,可用于创建委托或表达式树类型。

      所有 lambda 表达式都使用 lambda 运算符 =>,读作“goes to”。 lambda 运算符的左侧指定输入参数(如果有),右侧保存表达式或语句块

      http://msdn.microsoft.com/en-us/library/bb397687.aspx

      【讨论】:

        【解决方案4】:

        => 标记称为 lambda 运算符

        在 lambda 表达式中用于将左侧的输入变量与右侧的 lambda 主体分开。

        MSDN

        【讨论】:

          猜你喜欢
          • 2013-05-07
          • 2015-09-18
          • 2017-03-29
          • 2011-03-16
          • 2011-07-09
          • 2016-07-23
          • 1970-01-01
          相关资源
          最近更新 更多