3 回答

TA貢獻1809條經驗 獲得超8個贊
假設您有LINQ可用并且對性能不太在意,則最簡單的事情如下:
var arraysAreEqual = Enumerable.SequenceEqual(a1, a2);
實際上,可能值得用Reflector或ILSpy檢查這些SequenceEqual方法的實際作用,因為無論如何它都可以針對數(shù)組值的特殊情況進行優(yōu)化!

TA貢獻1833條經驗 獲得超4個贊
“為什么我會收到該錯誤?” -可能using System.Collections;文件的頂部沒有“ ”-只有“ using System.Collections.Generic;”-但是,泛型可能更安全-參見下文:
static bool ArraysEqual<T>(T[] a1, T[] a2)
{
if (ReferenceEquals(a1,a2))
return true;
if (a1 == null || a2 == null)
return false;
if (a1.Length != a2.Length)
return false;
EqualityComparer<T> comparer = EqualityComparer<T>.Default;
for (int i = 0; i < a1.Length; i++)
{
if (!comparer.Equals(a1[i], a2[i])) return false;
}
return true;
}

TA貢獻1825條經驗 獲得超4個贊
對于.NET 4.0及更高版本,您可以使用StructuralComparisons類型比較數(shù)組或元組中的元素:
object[] a1 = { "string", 123, true };
object[] a2 = { "string", 123, true };
Console.WriteLine (a1 == a2); // False (because arrays is reference types)
Console.WriteLine (a1.Equals (a2)); // False (because arrays is reference types)
IStructuralEquatable se1 = a1;
//Next returns True
Console.WriteLine (se1.Equals (a2, StructuralComparisons.StructuralEqualityComparer));
- 3 回答
- 0 關注
- 388 瀏覽
添加回答
舉報