這讓我拉我的頭髮幾天:ValueType的數組不喜歡object.Equals?
byte[] _A = new byte[64];
// Fill _A with some meaningful, valid data.
byte[] _B = new byte[_A.Length];
_A.CopyTo(_B, 0);
if(!_A.Equals(_B)) {
throw new WtfException(
"It appears object.Equals doesn't work on arrays of value types...");
}
是的,這將引發WtfException
。我花了幾天時間才注意到。 byte
是ValueType
。但是,byte[]
是System.Array
,它是一個參考類型。根據.NET文檔:
Equals的默認實現支持引用類型爲 的引用相等,以及值類型按位相等。參考 相等意味着被比較的對象引用指的是同一對象的 。按位相等意味着被比較的對象具有相同的二進制表示。
任何人都可以幫忙嗎?