基于用户输入比较c#中的数组

基于用户输入比较c#中的数组,c#,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());

尝试比较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");
        }
    }
Console.WriteLine(“为第1个数组输入元素:”);
int[]arr1=新int[3];
for(int i=0;i

我不断得到一个不相等的

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

如果只想检查两个数组是否包含相同的值,可以使用SequenceEquals LinQ运算符,如果希望获得两个数组之间的差异,可以使用Exception

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");

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

如果只想检查两个数组是否包含相同的值,可以使用SequenceEquals LinQ运算符,如果希望获得两个数组之间的差异,可以使用Exception

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");

那是行不通的。这是数组的两个不同实例。Equals是从对象继承的。

这永远不会起作用。这是数组的两个不同实例。Equals是从Object继承的。

我认为您正在比较两个obect容器的相等性-请参阅本文。。。你需要比较一下内容。

我想你是在比较两个obect容器是否相等-请参阅本文。。。您需要比较内容。

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

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

的可能副本的可能副本如果要使用
LINQ
,只需使用
SequenceEqual
。它可以短路,与
不同的是
。它也比较短,并且在语义上表示您想要做的事情。哦,
除了
不返回数组外,它返回一个
IEnumerable
,因此您需要使用
Count
,或者更好的是,
Any
,而不是
Length
@Servy-OMG,因为您很快。wait如果要使用
LINQ
,只需使用
SequenceEqual
。它可以短路,与
不同的是
。它也比较短,并且在语义上表示您想要做的事情。哦,
除了
不返回数组外,它返回一个
IEnumerable
,因此您需要使用
Count
,或者更好的是,
Any
,而不是
Length
@Servy-OMG,因为您很快。等待