【问题标题】:c# short(=>) operator overloadingc# short(=>) 运算符重载
【发布时间】:2017-05-10 10:48:39
【问题描述】:

我成功地重载了这样的操作符:

public static Vector3D operator +(Vector3D v1, Vector3D v2){
    return new Vector3D(v1._x + v2._x, v1._y + v2._y, v1._z + v2._z);
}

我在this page 上看到我也可以这样做:

public static Vector3D operator +(Vector3D v1, Vector3D v2) =>
    new Vector3D(v1._x + v2._x, v1._y + v2._y, v1._z + v2._z);

但在这种情况下,在=> 下我收到错误消息“;预期”。我错过了什么?

【问题讨论】:

  • 可能是C#版本不同或Visual Studio版本不同
  • 正如@Ian 所提到的,您可能正在运行使用旧版C# 的Visual Studio 版本。
  • 谢谢,那它需要什么版本的 C#?
  • @PawełAudionysos 你用什么 VS 版本?最新的 C# 应该可以......但这真的取决于你是否拥有它
  • 您可能可以破解您的 .csproj 文件以使用更新的 msbuild/sdk,但您不会从 Visual Studio 中的智能感知中获得太多帮助,因此任何语法完成都会与您作斗争。我建议您在更新到更新的视觉工作室之前远离新语法。

标签: c# operator-overloading


【解决方案1】:

查看您发布示例的链接:

public static Complex operator +(Complex c1, Complex c2) =>  
    new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);  

// Override ToString() to display a complex number   
// in the traditional format:  
public override string ToString() => $"{this.real} + {this.imaginary}";  

强烈建议可以从 C# 6.0 版本应用此功能,因为从 C# 6.0 及更高版本开始使用 $ 替代 String.Format

尝试使用 Visual Studio 2015 使其工作。我做到了,它成功了

是否可以更新 VS 2012 的 C# 版本?

是的,显然是的。怎么做你会发现在this post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2016-04-08
    • 2012-06-02
    • 2014-01-14
    • 2013-03-23
    • 2013-12-03
    相关资源
    最近更新 更多