昨天我問了一下使用運算符重載,沒有人提到它相當普遍,通常用於檢查字符串一樣的兩個對象的股權,顏色..重載==操作符檢查兩個對象的euqity
此外,在這種情況下,重載==是正確的,如果我的類型表示可以檢查其字段公平性的某些對象等等。當然,我並不是說要檢查變量是否指向同一個對象。
昨天我問了一下使用運算符重載,沒有人提到它相當普遍,通常用於檢查字符串一樣的兩個對象的股權,顏色..重載==操作符檢查兩個對象的euqity
此外,在這種情況下,重載==是正確的,如果我的類型表示可以檢查其字段公平性的某些對象等等。當然,我並不是說要檢查變量是否指向同一個對象。
你基本上可以決定自己的公平是什麼意思。如果這是你的一些領域是相同的,那麼一定要檢查一下。
是的,過載==
操作員(當然是同時!=
)是合理的。
你需要知道它是超載而不是覆蓋,所以如果你有:
object first = ...;
object second = ...;
if (first == second)
,將檢查參考平等,無論你做了什麼。
不太清楚你的問題是什麼,因爲你似乎已經自己回答了。 您可以重載operator ==等來檢查兩個對象是否相同,因此在您的字符串或顏色示例中,兩個字符串具有相同的實際內容,或者兩種顏色具有相同的RGB值。正如你所說,這與兩個指向同一個對象的變量不同。 你可能想了解更多信息請查看MSDN部分
超載。
更多的信息,包括運營商的列表,你可以重載類似的問題: why C# not allow operator overloading?
在我看來是更好地使用==來檢查參考平等和使用.Equals(obj對象)的自定義平等。
這樣你就有兩種比較方式,而不是一種。
無論如何要記住,如果你重新定義平等,你應該重新定義GetHashCode(),所以兩個相等的對象返回相同的散列碼。
我怎麼能覆蓋操作員?我認爲這是不可能的 – Mocco
@Cocodrilo:你根本不能重載操作符。是的,你只能在相同的類型內重載。 –