根据用户输入比较c#中的数组

时间:2013-02-01 20:29:06

标签: c#

尝试比较2个数组,但没有让它工作

            Console.WriteLine("Entering elements for ths 1st array: ");
        int[] arr1 = new int[3];
        for (int i = 0; i < arr1.Length; i++)
        {
            arr1[i] = Convert.ToInt32(Console.ReadLine());
        }
        Console.WriteLine("Entering the elements for the 2nd array: ");
        int[] arr2 = new int[3];
        for (int i = 0; i < arr2.Length; i++)
        {
            arr2[i] = Convert.ToInt32(Console.ReadLine());
        }
        bool result = Array.Equals(arr1,arr2);
        if (result)
        {
            Console.WriteLine("Equal");
        }
        else
        {
            Console.WriteLine("Not equal");
        }
    }

我继续获得不等于

4 个答案:

答案 0 :(得分:3)

这不起作用,因为Array.Equals()运行Object.Equals方法 - 它仅比较引用。 例如,使用Enumerable.SequenceEqual()代替。

答案 1 :(得分:0)

您没有比较存储在数组中的值,而是比较整数数组的两个不同实例。 (参考文献)。
当然他们是不同的。

如果只想检查两个数组是否包含相同的值,可以使用SequenceEquals LinQ运算符,如果希望得到两个数组之间的区别,请使用Except

if(arr1.SequenceEquals(arr2))
     Console.WriteLine("Equals");
else
     Console.WriteLine("Not equal");

....

int[] diff =  arr1.Except(arr2).ToArray();
if(diff.Length == 0) 
     Console.WriteLine("Equals");
else
     Console.WriteLine("Not equal");

答案 2 :(得分:0)

那永远不会奏效。这是阵列的两个不同实例。 Equals继承自Object。

答案 3 :(得分:0)

我认为你是在比较两个对象容器是否相等 - 请参阅这篇文章...... What's the fastest way to compare two arrays for equality?你需要比较内容。