有点概念性的问题:
我正在按照 Vector3(3 个 int 值)的方式创建我的自定义结构,并且我正在努力重载标准运算符(+、-、*、/、== 等...)
当我构建供外部使用的库时,我试图遵守 FxCop 规则。因此,他们建议使用执行相同功能的方法。
例如。 .Add()、.Subtract() 等...
为了节省代码重复,其中一个方法(运算符重载或实际方法)将调用另一个。
我的问题是,哪个应该调用哪个?
是吗(这只是一个示例代码):
一个)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return struc1.Add(struct2);
}
public MyStruct Add(MyStruct other)
{
return new MyStruct (
this.X + other.X,
this.Y + other.Y,
this.Z + other.Z);
}
或:
B)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return new MyStruct (
struct1.X + struct2.X,
struct1.Y + struct2.Y,
struct1.Z + struct2.Z);
}
public MyStruct Add(MyStruct other)
{
return this + other;
}
我真的不确定哪个更可取,但我正在寻找一些意见:)
最佳答案
我会选择 A)。由于运算符重载不符合 CLS(并非所有 .NET 语言都支持重载运算符),因此可以将其视为实际 Add 方法的语法糖。
关于c# - C# 中的运算符重载 - 实际代码应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728990/