2011-03-01 44 views
1

昨天我問了一下使用運算符重載,沒有人提到它相當普遍,通常用於檢查字符串一樣的兩個對象的股權,顏色..重載==操作符檢查兩個對象的euqity

此外,在這種情況下,重載==是正確的,如果我的類型表示可以檢查其字段公平性的某些對象等等。當然,我並不是說要檢查變量是否指向同一個對象。

回答

1

你基本上可以決定自己的公平是什麼意思。如果這是你的一些領域是相同的,那麼一定要檢查一下。

2

是的,過載==操作員(當然是同時!=)是合理的。

你需要知道它是超載而不是覆蓋,所以如果你有:

object first = ...; 
object second = ...; 

if (first == second) 

,將檢查參考平等,無論你做了什麼。

+0

我怎麼能覆蓋操作員?我認爲這是不可能的 – Mocco

+0

@Cocodrilo:你根本不能重載操作符。是的,你只能在相同的類型內重載。 –

0

不太清楚你的問題是什麼,因爲你似乎已經自己回答了。 您可以重載operator ==等來檢查兩個對象是否相同,因此在您的字符串或顏色示例中,兩個字符串具有相同的實際內容,或者兩種顏色具有相同的RGB值。正如你所說,這與兩個指向同一個對象的變量不同。 你可能想了解更多信息請查看MSDN部分

Operator Overloading Tutorial

超載。

更多的信息,包括運營商的列表,你可以重載類似的問題: why C# not allow operator overloading?

1

在我看來是更好地使用==來檢查參考平等和使用.Equals(obj對象)的自定義平等。

這樣你就有兩種比較方式,而不是一種。

無論如何要記住,如果你重新定義平等,你應該重新定義GetHashCode(),所以兩個相等的對象返回相同的散列碼。