当你重载 - 一元运算符时,对于不可变类型,你可以这样写:
public static Point3 operator - (Point3 p)
{
return new Point3 (-p.X, -p.Y, -p.Z);
}
但是对于 + 一元运算符,应该如何实现呢?像这样:
public static Point3 operator + (Point3 p)
{
return p;
}
或者像这样:
public static Point3 operator + (Point3 p)
{
return new Point3 (p);
}
最佳答案
无论哪种方式都很好。您不会在这两种方法中的任何一种中改变原始对象。
如果您调用 string.substring(0, string.length())
,则没有理由无法返回原始字符串。
您与不变性签署的唯一契约(Contract)是,一旦创建了对象,它就不会更改。
关于c# - 重载 +/- 一元运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/778939/