如何判断两个字符串数组是否相等?
我使用了它,但它不起作用,即使两者的内容相同。
string[] array1 = new string[]{"A" , "B"}
string[] array2 = new string[]{"A" , "B"}
if(array1 == array2) // it return false !!!!
{
//
}
答案 0 :(得分:13)
如果您有权访问Linq,请使用SequenceEqual
。否则,只需提供代码以首先检查数组是否长度相等,然后如果每个索引的项目相等。
答案 1 :(得分:6)
在StackOverflow上查看以下内容。我相信你要找的是以下内容。 Comparing arrays in C#
var arraysAreEqual = Enumerable.SequenceEqual(array1, array2);
答案 2 :(得分:3)
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;
}
答案 3 :(得分: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
具有允许使用自定义比较器的优势。