C# 比较两个数组中的内容是否相同的算法
这里要比较的是两个数组中的内容是否相同,以int数组为例
以下示例返回false 因为是比较相同索引的值
int[] Arraya = new[] { 1, 2, 3, 4, 5 };
int[] Arrayb = new[] { 5, 3, 2, 1, 4 };
以上两个数组内的值是相同的,都是1,2,3,4,5.具体的算法如下。
第一种就是最原始的方法,使用循环。
public static bool compareArr(int[] Arraya,int[] Arrayb){
bool areEqual = true;
if (Arraya.Length != Arrayb.Length)
{
areEqual = false;
}
else
{
for (int i = 0; i < Arraya.Length; i++)
{
if (Arraya[i] != Arrayb[i])
{
areEqual = false;
break;
}
}
}
if (areEqual)
{
Console.WriteLine("两个数组的内容相同");
}
else
{
Console.WriteLine("两个数组的内容不同");
}
}
第二种方法可以借助Linq查询来比较。
using System.Linq;
public static bool compareArr(int[] arr1, int[] arr2)
{
var q = from a in arr1 join b in arr2 on a equals b select a;
bool flag = arr1.Length == arr2.Length && q.Count() == arr1.Length;
return flag;//内容相同返回true,反之返回false。
}
第三种
int[] Arraya = new[] { 1, 2, 3, 4, 5 };
int[] Arrayb = new[] { 5, 3, 2, 1, 4 };
bool areEqual = Arraya.SequenceEqual(Arrayb);
if (areEqual)
{
Console.WriteLine("两个数组的内容相同");
}
else
{
Console.WriteLine("两个数组的内容不同");
}