【问题标题】:C# 6.0 => Operator [duplicate]C# 6.0 => 运算符 [重复]
【发布时间】:2017-03-10 05:22:04
【问题描述】:

我正在使用 Visual Studio 2013。我在 github 中找到了一个项目,该项目正在使用 Visual Studio 2015。我正在尝试编译它,但使用 vs2013 时出现错误

无效的令牌';'在类、结构或接口成员声明中

这里的代码:

private readonly Log _log;
public Log Log => _log; // What => Operator is doing ? Pointer ?

是的,C# [6.0] 中的=> 运算符有哪些新功能?有没有办法在 vs2013 中使用 C# 6.0?

【问题讨论】:

标签: c#


【解决方案1】:

写一个只读属性是一个较短的版本。

public Log Log => _log;

等于

public Log Log { get { return _log; } }

但我不知道在旧版本中无法使用此功能。

【讨论】:

    【解决方案2】:

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

    public int TwoTimes(int number)
    {
        return 2*number;
    }
    

    等价于

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

    注意:C# 6.0 是随 VS 2015 引入的。您不能将其与早期版本一起使用。

    参考:What does "=>" operator mean in a property in C#?

    【讨论】:

      【解决方案3】:

      问题是 Visual Studio 2013 不支持 C# 6.0。 以旧的方式转换它,就像之前的回答一样

      private readonly Log _log;
      public Log Log 
      {
          get { return _log; }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-22
        • 2016-09-26
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2015-09-18
        • 2011-12-24
        相关资源
        最近更新 更多