我想重寫我的類的運算符*。我知道如何處理*爲MyClass的* MyClass的,但我怎麼能實現這個具有繁殖例如可能性:覆蓋運算符c#
7 * MyClass的
7可以說,雙和MyClass的是MyClass的對象,
感謝您的幫助
我想重寫我的類的運算符*。我知道如何處理*爲MyClass的* MyClass的,但我怎麼能實現這個具有繁殖例如可能性:覆蓋運算符c#
7 * MyClass的
7可以說,雙和MyClass的是MyClass的對象,
感謝您的幫助
當您爲您的班級提供操作員時,操作員實施的參數類型控制着您正在處理的哪種情況。
舉例說明:
// Declare which operator to overload (+), the types
// that can be added (two Complex objects), and the
// return type (Complex):
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
這種方法定義,如果你想添加兩個Complex
號碼做什麼。
如果您試圖將其與double
和Complex
配合使用,編譯將會失敗。
在你的情況,你只需要聲明兩個版本:
public static MyClass operator *(MyClass c1, MyClass c2)
{
return ...
}
public static MyClass operator *(double n, MyClass c)
{
return ...
}
在這種情況下,適當的簽名是:
public static MyClass operator *(double a, MyClass b)
這意味着它需要一個double
一個作爲右側的MyClass
,並返回MyClass
。
還要注意的是7 * MyClass的是不一樣的MyClass的* 7。你需要兩個操作符重載來實現這一點。 – rein 2010-11-17 00:24:43
沒有其他方法可以寫第二個運算符超負荷嗎? – gruber 2010-11-17 00:47:58
如果你想支持(雙)*(MyClass),那麼這就是你如何做到的。你聽起來好像這不能解決你的問題 - 你有什麼問題? – Bevan 2010-11-17 03:34:10