比较.NET中的两字节数组

我怎么能这么快

我当然可以做到:

静态布尔字节比较(字节[]a1,字节[]a2)
{
如果(a1.长度!=a2.长度)
返回false;
对于(int i=0;i<a1.Length;i++)
如果(a1[i]!=a2[i])
返回false;
返回true;
}

但是我正在寻找一个BCL函数或者一些经过高度优化的方法来实现这一点

java.util.Array.equals((sbyte[])(Array)a1,(sbyte[])(Array)a2);

很好地工作,但它看起来不适合x64

请注意我的超级快速答案

您可以使用Enumerable.SequenceEqual方法

使用系统;
使用System.Linq;
...
var a1=新的int[]{1,2,3};
var a2=新的int[]{1,2,3};
var a3=新的int[]{1,2,4};
变量x=a1。序列相等(a2);//符合事实的
变量y=a1。序列相等(a3);//错误的

如果由于某种原因无法使用.NET 3.5,您的方法是可以的。
编译器\运行时环境将优化您的循环,因此您无需担心性能

发表评论