根据用户输入比较 c# 中的数组
本文关键字:数组 比较 用户 输入 | 更新日期: 2023-09-27 17:57:09
试图比较 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");
}
}
我不断得到一个不平等
这
不起作用,因为 Array.Equals() 运行Object.Equals
方法 - 它只比较引用。例如,请改用Enumerable.SequenceEqual()
。
这永远行不通。这是数组的两个不同实例。等于继承自 Object。
我认为您正在比较两个相等的容器 - 请参阅这篇文章...比较两个数组相等性的最快方法是什么?您需要比较内容。
您不是在比较存储在数组中的值,而是在比较整数数组的两个不同实例。(参考资料)。
当然,它们是不同的。
如果只想检查两个数组是否包含相同的值,则可以使用 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");