0

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

4 に答える 4

3

Array.Equals()はメソッドを実行するため、これは機能しませんObject.Equals。参照のみを比較します。Enumerable.SequenceEqual()たとえば、代わりに使用してください。

于 2013-02-01T20:35:41.637 に答える
0

配列に格納されている値を比較しているのではなく、整数配列の2つの異なるインスタンスを比較しています。(参照)。
もちろん違います。

2つの配列に同じ値が含まれているかどうかのみを確認する場合は、SequenceEquals LinQ演算子を使用できます。2つの配列の違いを取得する場合は、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");
于 2013-02-01T20:32:20.607 に答える
0

それは決してうまくいきません。これらは、アレイの2つの異なるインスタンスです。EqualsはObjectから継承されます。

于 2013-02-01T20:32:44.060 に答える
0

2つのオブジェクトコンテナを比較して同等であると思います-この投稿を参照してください... 2つの配列を同等で比較する最も速い方法は何ですか?内容を比較する必要があります。

于 2013-02-01T20:33:14.897 に答える