【问题标题】:Comparing arrays in c# based on user input根据用户输入比较c#中的数组
【发布时间】:2013-02-01 20:29:06
【问题描述】:

尝试比较 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");
        }
    }

我不断得到一个不等于

【问题讨论】:

标签: c#


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    那永远行不通。这是数组的两个不同实例。 Equals 继承自 Object。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        如果您只想检查两个数组是否包含相同的值,您可以使用 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");
        

        【讨论】:

        • 如果您要使用LINQ,只需使用SequenceEqual。它可以短路,不像Except。它也更短,并且在语义上代表了您想要做的事情。哦,Except 不返回一个数组,它返回一个IEnumerable&lt;T&gt;,所以你需要使用Count,或者更好的是Any,而不是Length
        • @Servy OMG,你很快。等等
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        • 2015-08-30
        • 2021-10-14
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多