我怎样才能快速做到这一点?
当然我可以这样做:
static bool ByteArrayCompare(byte[] a1, byte[] a2)
{
if (a1.Length != a2.Length)
return false;
for (int i=0; i<a1.Length; i++)
if (a1[i]!=a2[i])
return false;
return true;
}
但我正在寻找一个BCL https://en.wikipedia.org/wiki/Standard_Libraries_%28CLI%29#Base_Class_Library函数或一些高度优化的行之有效的方法来做到这一点。
java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2);
效果很好,但看起来不适用于 x64。
注意我的超快回答here https://stackoverflow.com/a/8808245/4489.
您可以使用可枚举的.SequenceEqual http://msdn.microsoft.com/en-us/library/bb348567.aspx method.
using System;
using System.Linq;
...
var a1 = new int[] { 1, 2, 3};
var a2 = new int[] { 1, 2, 3};
var a3 = new int[] { 1, 2, 4};
var x = a1.SequenceEqual(a2); // true
var y = a1.SequenceEqual(a3); // false
如果由于某种原因您无法使用.NET 3.5,您的方法也可以。
编译器\运行时环境将优化您的循环,因此您无需担心性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)