C# 比较两个int数组

C# 比较两个int数组,c#,C#,我写了这段代码: class Program { static void Main(string[] args) { Test t = new Test(); int[] tal1 = { 3, 2, 3}; int[] tal2 = { 1, 2, 3}; Console.WriteLine(t.theSameInBoth(tal1,tal2)); } } class Test { public

我写了这段代码:

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test();
        int[] tal1 = { 3, 2, 3};
        int[] tal2 = { 1, 2, 3};

        Console.WriteLine(t.theSameInBoth(tal1,tal2));
    }
}

class Test
{
    public Boolean theSameInBoth(int[] a, int[] b)
    {
        bool check = false;

        if (a.Length == b.Length)
        {
            for (int i = 0; i < a.Length; i++)
                if (a[i].Equals(b[i]))
                {
                    check = true;
                    return check;
                }
        }

        return check;
    }
}
类程序
{
静态void Main(字符串[]参数)
{
测试t=新测试();
int[]tal1={3,2,3};
int[]tal2={1,2,3};
控制台写入线(t.theSameInBoth(tal1,tal2));
}
}
课堂测试
{
公共布尔theSameInBoth(int[]a,int[]b)
{
布尔检查=假;
如果(a.Length==b.Length)
{
for(int i=0;i
所以这里的交易是。我需要发送两个数组,其中包含数字。然后我需要检查阵列。如果数组中的所有数字都相同。我需要将我的支票设为真并退回。唯一的问题是。在这里设置的代码中,我发送了一个3,2,3的数组和一个1,2,3的数组,它仍然返回check作为true


我是这方面的新手,所以我希望这里的任何人都能帮助我

您需要反向测试:

class Test
{
    public bool theSameInBoth(int[] a, int[] b)
    {
        if (a.Length == b.Length)
        {
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] != b[i])
                {
                    return false;
                }
            }

            return true;
        }

        return false;
    }
}
类测试
{
美国公共图书馆(int[]a,int[]b)
{
如果(a.Length==b.Length)
{
for(int i=0;i
只要一对项目不同,两个数组就不同


在您的代码中,您实际上说过,只要一对项目相等,两个数组就相等。

一旦找到第一个匹配项,您就返回。你需要这样的东西:

bool check = true;

if (a.Length == b.Length)
{
   for (int i = 0; i < a.Length; i++)
   {
      if (!a[i].Equals(b[i]))
      {
            check = false;
            break;
       }

   }
   return check;
}
else 
  return false;
bool check=true;
如果(a.Length==b.Length)
{
for(int i=0;i
bool isindential=true;
如果(a.Length==b.Length)
{
for(int i=0;i

像这样试试。代码总是返回
true
,因为如果数组中的一个元素相等,则
if
语句中的代码将返回
true
。在我的例子中,我正在检查是否不相等,如果发生这种情况,只需返回
false
。请注意,我使用了其他变量,使这一点更加明确,并在乞讨中实现。

我的习惯是添加Linq解决方案:

public bool IsSame(int[] a, int[] b)
{
    return a.Length == b.Length &&
           a.Select((num, index) => num == b[index]).All(b => b);
}
另一种很酷的Linq方法:

public bool IsSame(int[] a, int[] b)
{
    return a.Length == b.Length &&
           Enumerable.Range(0, a.Length).All(i => a[i] == b[i]);
}

这是学校的代码作业。问题是我不能用这个。我已经试过了,效果很好。但遗憾的是,我不能用它。哦,公平地对待反对票,伙计们。老实说…;-)LINQ非常灵活,但有没有人运行过性能测试,看看它与在一个好的老式循环中运行命令式代码的比较结果如何?此外,如果这是一项学校作业,大概是为了学习如何编程,而不是学习微软的LINQ语法,那么命令式代码方法可能更合适。它的效果非常好!非常感谢@如果答案对你有帮助,你可以接受它。祝你的项目好运。工作顺利!非常感谢!非常感谢!工作得很卖力最后一项是多余的我得调查一下林克。我还没看完呢!基本上你写的和我写的一样吗?似乎是更简单的解决方案。分解,它看起来有点不同,但逻辑上它做的是相同的事情,是的。从效率上讲,简单循环更好,但意义不大。你应该选择任何你对阅读和理解更满意的东西,这可能不是Linq。再说一次,我只是喜欢Linq。Linq中已经有这样一个函数:
a.SequenceEqual(b)
是的,我已经尝试过SequenceEqual,它看起来简单多了,但正如我所说,这是一个学校作业,我们被告知不要使用it@NickolaiSchmidt那么任务到底是什么呢?
public bool IsSame(int[] a, int[] b)
{
    return a.Length == b.Length &&
           Enumerable.Range(0, a.Length).All(i => a[i] == b[i]);
}