public static MyClass operator++(MyClass op)
{
MyClass result = new MyClass(); // MyClass() x=y=z=0;
result.x = op.x + 1;
result.y = op.y + 1;
result.z = op.z + 1;
return result:
}
//...
public void Main()
{
MyClass c = new MyClass();
MyClass b = new MyClass(1,2,3); //ctor x = 1, ...
c = b++;
}
問題是爲什麼變量b
會改變? 因爲result.x = op.x + 1;
不應該改變op.x
結果實際上是c
是(1,2,3)
b
是(2,3,4)
我不明白爲什麼不c
是(2,3,4)
和b
是(1,2,3)
重載++ C#
但我在這裏使用它時,「++」重載。 「c = b ++」因此C#自動從基礎「++」中添加非重載函數? – Nikita 2011-05-05 20:10:38
@尼基塔,是的,它超載 - 所以它使用你的代碼;但語義是相同的。 – 2011-05-05 20:16:16
+1只要我的答案票復活,哈哈。很好的答案。 :) – 2011-05-05 20:19:34