【发布时间】:2018-07-25 12:12:24
【问题描述】:
我可以在.NET Core 2.0 类库中定义以下不可变结构:
public struct S {
public readonly int v;
public S(int value) => v = value;
public static S operator +(in S l, in S r)
=> new S(l.v + r.v);
}
在第二个项目(.NET Core 2.0 控制台应用程序)中,我尝试使用重载运算符。因此,我在库项目中添加了项目引用。但是下面的代码编译失败:
class Program {
static void Main(string[] args)
=> Console.WriteLine((new S(4) + new S(3)).v);
}
错误信息:
错误 CS0019:运算符“+”不能应用于“S”和“S”类型的操作数
详情:
- 我已将两个项目配置为使用最新的
C#版本 (C# 7.2) - 使用
.NET CORE 2.0作为目标框架 - 如果我在同一个项目中使用它,编译就可以工作
- 如果我删除
in修饰符l和r - 使用
ref修饰符 fol和r失败并出现ERROR CS0631 - 我的环境:VS 2017 15.5.5 社区
【问题讨论】:
标签: c# struct operator-overloading c#-7.2