重寫相等運算子(==)或Equals方法來比較參考型別是一種常見做法。然而,MSDN最近的討論建議謹慎對待這種方法。問題仍然是:
如何有效率且正確地比較兩個引用型?
根據所提及的MSDN文章,對於引用類型,重寫相等運算子(==)和Equals方法通常不被推薦,因為它比較的是實例標識而不是資料相等性。這在某些情況下會導致意想不到的結果。
對於具有值語意的參考類型(其中相等性應基於資料內容),最佳實踐是實作System.IEquatable
以下是實作IEquatable
<code>public class Point : IEquatable<Point> { public int X { get; } public int Y { get; } public bool Equals(Point other) => X.Equals(other.X) && Y.Equals(other.Y); }</code>
除了實作Equals之外,在使用IEquatable
實作IEquatable
在.NET中正確實現相等性需要仔細考慮被比較類型的語意。透過遵循上述最佳實踐,您可以確保可靠且有效率地比較引用類型,無論它們表示值語義還是引用語義。
以上是比較 .NET 中引用類型的最佳方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!