gpt4 book ai didi

c# - 在 C# 中比较数组

转载 作者:IT王子 更新时间:2023-10-29 03:44:12 25 4
gpt4 key购买 nike

我正在尝试比较两个数组。我尝试了这段代码并得到了以下错误。

static bool ArraysEqual(Array a1, Array a2)
{
if (a1 == a2)
return true;

if (a1 == null || a2 == null)
return false;

if (a1.Length != a2.Length)
return false;

IList list1 = a1, list2 = a2; //error CS0305: Using the generic type 'System.Collections.Generic.IList<T>' requires '1' type arguments
for (int i = 0; i < a1.Length; i++)
{
if (!Object.Equals(list1[i], list2[i])) //error CS0021: Cannot apply indexing with [] to an expression of type 'IList'(x2)
return false;
}
return true;
}

为什么会出现该错误?我选择了一个低技术含量的解决方案并做了这个工作正常,但我需要为每种类型复制/粘贴几次。

static bool ArraysEqual(byte[] a1, byte[] a2)
{
if (a1 == a2)
return true;

if (a1 == null || a2 == null)
return false;

if (a1.Length != a2.Length)
return false;

for (int i = 0; i < a1.Length; i++)
{
if (a1[i] != a2[i])
return false;
}
return true;
}

最佳答案

如果你有 LINQ 可用并且不太关心性能,最简单的是以下内容:

var arraysAreEqual = Enumerable.SequenceEqual(a1, a2);

事实上,可能值得使用 ReflectorILSpy 检查 SequenceEqual 方法实际执行的操作,因为它可能会针对特殊情况进行优化无论如何都是数组值的情况!

关于c# - 在 C# 中比较数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com