首页新闻找找看学习计划

请问byte[]如何比较

0
悬赏园豆:20 [已解决问题] 解决于 2011-11-10 12:09
dbModel2.TimeMark==model.TimeMark
false
Convert.ToBase64String(dbModel2.TimeMark)
"AAAAAAAANsk="
Convert.ToBase64String(model.TimeMark)
"AAAAAAAANsk="
Convert.ToBase64String(dbModel2.TimeMark)==Convert.ToBase64String(model.TimeMark)
true

TimeMark是数据库里的timestamp类型, c#里面是byte[]
请问, 两个byte[]如何比较呢?  代码中用==和equal返回false, 转换成字符串就可以了.

MyCoolDog的主页 MyCoolDog | 初学一级 | 园豆:95
提问于:2011-11-10 11:20
< >
分享
最佳答案
2

3.5时代的SequenceEquals方法可以使用

收获园豆:5
Gray Zhang | 专家六级 |园豆:17610 | 2011-11-10 11:25
其他回答(1)
0

数组是引用类型,你直接用==和equals比较的是引用(由于是不同的引用当然结果是false)。3.0以上可以用linq:

byte[] a, b;
//初始化
//LINQ:要求C# 3.0以上
bool same = a.SequenceEqual(b);
//更早版本可以用
bool same = a.Length == b.Length;
for(int i=0;i < a.Length; i++)
{
if (!same) break;
same = a[i] == b[i];
}
收获园豆:15
水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-10 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册