问题描述
||
这个问题已经在这里有了答案:
解决方法
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;
}
, 如果您可以访问Linq,请使用SequenceEqual
。否则,只需提供代码以首先检查数组是否长度相等,然后检查每个索引处的项是否相等。
, 在StackOverflow上查看以下内容。我相信您正在寻找以下内容。在C#中比较数组
var arraysAreEqual = Enumerable.SequenceEqual(array1,array2);
, 您可以像这样使用.NET4功能Array.IStructuralEquatable.Equals
:
IStructuralEquatable equ = array1;
bool areEqual = equ.Equals(array2,EqualityComparer<string>.Default);
这也可以写在一行上:
bool areEqual = (array1 as IStructuralEquatable).Equals(array2,EqualityComparer<string>.Default);
使用ѭ6的优点是允许使用自定义比较器。