2011-06-01 60 views

回答

2
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; 
} 
11

如果您有权访问Linq,请使用SequenceEqual。否则,只需提供代码以首先检查数组是否长度相等,然后在每个索引处的项目是否相等。

3

可以使用.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); 

使用IStructuralEquatable具有可定制的优势比较器被使用。

+0

和我一起工作很好 – AshOoO 2011-11-20 12:19:21

5

看看下面的StackOverflow。我相信你正在寻找的是以下内容。 Comparing arrays in C#

var arraysAreEqual = Enumerable.SequenceEqual(array1, array2); 
相关问题