【问题标题】:What does "=>" operator mean in a property in C#? [duplicate]C# 属性中的“=>”运算符是什么意思? [复制]
【发布时间】:2017-03-10 00:12:50
【问题描述】:

这段代码是什么意思?

public bool property => method();

【问题讨论】:

  • 也许你应该搜索 lambda 运算符
  • @meJustAndrew 这不是 lambda 运算符。它是一个表达式体成员,一个新的语言特性
  • 搜索“表达式主体属性”。
  • @PanagiotisKanavos Actually is is
  • @Liam 绝对不是。 OP 询问的是表达式主体属性,而不是 lambdas。

标签: c# c#-6.0


【解决方案1】:

这是一个表达式体属性,它是 C# 6 中引入的计算属性的新语法,它允许您以与创建 lambda 表达式相同的方式创建计算属性。该语法等价于

public bool property {
    get {
        return method();
    }
}

类似的语法也适用于方法:

public int TwoTimes(int number) => 2 * number;

【讨论】:

  • 正确(即谷歌搜索)名称是“表达式主体属性”
  • 答案中的唯一解释。
  • 第一次看到,我的第一反应是,为什么?。我从来没有看过这个属性然后就走了,你知道它需要什么,任意的 lambda 类型语法...也许在 Redmond 度过了缓慢的一天
  • @Liam 我已经使用这个功能几个月了。它对于具有大量委托的包装类特别有用,但它偶尔会帮助处理常规类中的一两个属性。
  • @Liam 恕我直言,C# 有一个空格问题,即有太多行,比如一个花括号。使一些结构更紧凑可以提高可读性,至少对我来说是这样。
【解决方案2】:

正如一些人提到的,这是 C# 6 首次引入的新功能,他们在 C# 7.0 中扩展了它的用法,将其与 getter 和 setter 一起使用,您还可以通过以下方法使用表达式体语法:

static bool TheUgly(int a, int b)
{
    if (a > b)
        return true;
    else
        return false;
}
static bool TheNormal(int a, int b)
{
    return a > b;
}
static bool TheShort(int a, int b) => a > b; //beautiful, isn't it?

【讨论】:

    【解决方案3】:

    这是一个表达式体属性。例如,请参阅MSDN。 这只是

    的简写
    public bool property
    {
        get
        {
            return method();
        }
    }
    

    表达式体函数也是可能的:

    public override string ToString() => string.Format("{0}, {1}", First, Second);
    

    【讨论】:

      【解决方案4】:

      属性中使用的=>expression body。基本上是用getter 编写属性的更短更简洁的方法。

      public bool MyProperty {
           get{
               return myMethod();
           }
      }
      

      被翻译成

      public bool MyProperty => myMethod();
      

      它更简单且可读性更强,但您只能在 C# 6 和here 中使用此运算符,您将找到有关表达式主体的特定文档。

      【讨论】:

        【解决方案5】:

        这是表达式的简化。

        public string Text =>
          $"{TimeStamp}: {Process} - {Config} ({User})";
        

        参考; https://msdn.microsoft.com/en-us/magazine/dn802602.aspx

        【讨论】:

          【解决方案6】:

          这是一个表达式体属性。它可以用作属性 getter 或方法声明的简化。 从 C# 7 开始,它还扩展到其他成员类型,例如构造函数、终结器、属性设置器和索引器。

          查看MSDN 文档了解更多信息。

          “表达式主体定义让您以非常简洁、易读的形式提供成员的实现。只要任何受支持成员的逻辑(例如方法或属性)由单个表达式组成,您就可以使用表达式主体定义。”

          【讨论】:

          • 不,不是。它是一个有表情的成员
          • 这个答案不应该被否决,因为很多人不知道有表情的成员。包括我猜的一些反对者。这并不是一个糟糕的答案。在 C# 5 中,这将是一个正确 的答案。应该删除它以删除负面代表
          猜你喜欢
          • 2015-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多