【问题标题】:How to find out whether two string arrays are equal to other [duplicate]如何找出两个字符串数组是否相等[重复]
【发布时间】:2011-06-01 05:05:35
【问题描述】:

可能重复:
Comparing two List<string> for equality

如何判断两个字符串数组是否相等?

我用过这个,但它不起作用,即使两者的内容相同。

string[] array1 = new string[]{"A" , "B"}

string[] array2 = new string[]{"A" , "B"}

if(array1 == array2)  // it return false !!!!
{
  // 
}

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      var arraysAreEqual = Enumerable.SequenceEqual(array1, array2);
      

      【讨论】:

        【解决方案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;
        }
        

        【讨论】:

          【解决方案4】:

          您可以像这样使用 .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 的优点是允许使用自定义比较器。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-06-14
            • 2015-10-30
            • 1970-01-01
            • 1970-01-01
            • 2019-09-20
            • 2011-04-25
            相关资源
            最近更新 更多