比较数组 c#

Posted

技术标签:

【中文标题】比较数组 c#【英文标题】:Compare array c# 【发布时间】:2021-11-28 08:04:34 【问题描述】:

创建一个名为 ArrayCompare 的方法,用于比较两个数组并返回一个 布尔值,指示它们是否包含完全相同的元素。它的输入应该是 两个整数数组 a 和 b。它的输出应该是一个布尔值,如果 a 和 b 它将返回 true 包含相同的元素,否则为 false

您好,我是 c# 新手,我想知道这是如何完成的。我阅读了一些文件,我只能想出这个。

    static bool ArrayCompare(int [] i , int [] j)
    
        if (i.Length == j.Length)
        
            for (int o = 0; o < i.Length; o++)
            

                //I am stuck here
                return false;
            
        
        return false;
    

【问题讨论】:

你可以在这个地方比较i[o]j[o],看看它们是否相同。 我不知道如何比较数组 i[o]j[o] 只是整数,可以使用 ==!= 进行比较 顺序重要吗? 【参考方案1】:
 static bool ArrayCompare(int [] i , int [] j)
    
        if (i.Length == j.Length)
        
            for (int o = 0; o < i.Length; o++)
            
                if(i[o]!=j[o])
                   return false;
            
            return true;
        
        return false;
    

【讨论】:

你永远不会回来true @KlausGütter 我编辑错了 注:或者你也可以使用IEnumerable扩展方法SequenceEqual,但是这种情况我觉得功课需要提供算法实现【参考方案2】:

您可以使用代码检查来检查

int[] array1 =  1, 2, 2 ;
int[] array2 =  1, 2, 2 ;

bool check = array1.SequenceEqual(array2);

【讨论】:

虽然这确实有效,但我觉得家庭作业的目的是让他编写自己的算法,而不是使用扩展方法 @MihaiC 这个问题没有提到这是否是一项任务。除非另有说明,否则最好尽可能使用内置函数。【参考方案3】:

这应该可行!

static bool ArrayCompare(uint [] a, uint [] b)

    bool equal = true;
    if(a.Length== b.Length)
    
        for(int i = 0,j=0; i < a.Length; ++i,++j)
        
            if (a[i] != b[j])
            
                   equal = false;
                   break;
           
        
    
    return equal;

【讨论】:

【参考方案4】:
    static bool ArrayCompare(int[]a, int [] b)
    

        if(a.Length == b.Length)
        
            for(int i = 0; i < a.Length; i++)
            
                if (a[i] == b[i])
                
                    if(a[a.Length - 1] == b[b.Length - 1])
                    
                        return true;
                    
                
                break;
                   
            
        

        return false;

    

此方法接受两个 int 数组作为参数,然后我们在循环之前首先检查以确保两个数组的长度相同。在 for 循环中,我们检查以确保第一个数组的当前索引与第二个数组的当前索引是否相同。如果是,我们得到两个数组的最后一个索引,如果相同,我们返回 true,如果索引不同,我们返回 false。然后我们可以创建两个数组并以这两个数组作为参数来控制方法。

【讨论】:

那么,1, 2, 31, 4, 3 会被认为是相同的吗?我不确定这是要做什么,但我很确定它是不正确的。 @JonasH 我的错,我会在等待您的答复时修复我的代码 这是错误的。即使数组不相等,它也会返回 true @MihaiC 是的,我知道,正如已经指出的,不需要再说一遍?我意识到我的错误

以上是关于比较数组 c#的主要内容,如果未能解决你的问题,请参考以下文章

C# | 比较IEnumerableList数组

比较 C# 中的数组

C# 比较两个包含小写文本的 byte[] 数组

在 C# 中比较数组的有效方法

C# 使用 LINQ Query 将记录与进程数组的结果进行比较

c# 比较两个数组每一个值是否相等