已经有一个现成的方法了
来源:互联网 发布:阿里云.com域名价格 编辑:程序博客网 时间:2024/04/30 07:48
Console.WriteLine(buffer1.IsEqual(buffer2));
不错,看来这位同学悟性挺高,懂得发挥扩展方法的作用了。但是,这位兄台仍旧不满意,还不够简单。
其实,.NET类库已经有一个现成的方法了,也是扩展方法,要比较两个序列(如数组,列表等)中各个元素是否相等,只要调用该方法即可,不用自己写代码实现。什么方法呢?这个方法的芳名叫做SequenceEqual。
因此,整个程序的代码我们完全可以很简单地完成。
byte[] buffer1 = { 0x001, 0x002, 0x003 };
byte[] buffer2 = { 0x001, 0x002, 0x003 };
Console.WriteLine(buffer1.SequenceEqual(buffer2));
这位仁兄如获至宝,马上兴奋起来,啊!原来还可以这样耍!就好比孙行者在龙宫发现如意棍一样的兴奋。
可能有些朋友又会问了,如果我们比较的元素是自己编写的类呢?我需要自己的比较规则。无妨,SequenceEqual方法还有一个重载,就是可以向方法的参数传一个实现了IEqualityComparer<in T>接口的对象。
由于EqualityComparer<T>类实现了该接口,在我自自定义比较器时,可以直接从该类派生。
比如我们定义了一个“帅哥”类,它包含Name和ID两个属性,对于任意两个“帅哥”对象,只要ID相等,我们就认为他们是同一位帅哥。
不错,看来这位同学悟性挺高,懂得发挥扩展方法的作用了。但是,这位兄台仍旧不满意,还不够简单。
其实,.NET类库已经有一个现成的方法了,也是扩展方法,要比较两个序列(如数组,列表等)中各个元素是否相等,只要调用该方法即可,不用自己写代码实现。什么方法呢?这个方法的芳名叫做SequenceEqual。
因此,整个程序的代码我们完全可以很简单地完成。
byte[] buffer1 = { 0x001, 0x002, 0x003 };
byte[] buffer2 = { 0x001, 0x002, 0x003 };
Console.WriteLine(buffer1.SequenceEqual(buffer2));
这位仁兄如获至宝,马上兴奋起来,啊!原来还可以这样耍!就好比孙行者在龙宫发现如意棍一样的兴奋。
可能有些朋友又会问了,如果我们比较的元素是自己编写的类呢?我需要自己的比较规则。无妨,SequenceEqual方法还有一个重载,就是可以向方法的参数传一个实现了IEqualityComparer<in T>接口的对象。
由于EqualityComparer<T>类实现了该接口,在我自自定义比较器时,可以直接从该类派生。
比如我们定义了一个“帅哥”类,它包含Name和ID两个属性,对于任意两个“帅哥”对象,只要ID相等,我们就认为他们是同一位帅哥。
0 0
- 已经有一个现成的方法了
- 已经有一个月中断了我的博客更新!
- Android下怎么把多张图片拼成一个gif啊,有没有现成的库?
- Android下怎么把多张图片拼成一个gif啊,有没有现成的库?
- 来深圳,已经快一月,谁有pb的工作,给介绍一个,谢谢了!!
- 一个简单的“ls -al”实现(其实网上已经有很多了)
- 求助哪位有现成的 png.lib
- 弄了一个下午的o-blog和github博客,还是用现成的吧。。
- 有个对象已经锁了,调用这个对象的方法会被阻塞吗?
- jquery 常用插件收集(有现成的就不用再自己写了和找了)、
- 获取现成的参考文献格式方法
- 从来不写blog因为没时间,很偶然发现这边有个现成的,先发一个试试,呵呵
- 好消息:CommonPhotoStar已经有中文的帮助文件了
- 有这么多现成的版本可用,为什么还要选择CLFS??
- 一个很好判断是否数字的现成的函数:isdigit()
- Android如何加载一个现成的动态库
- 屏幕的这一侧已经隐藏了一个工具栏...
- Hive报错,显示已经有一个Derby数据库启动了。
- Oracle笔记系列(三)
- 经典c程序 (0001)--取一个三位整数各位的数字
- 黑马程序员——连接多次打开效率问题
- gcc与g++的区别
- IOS面试题4
- 已经有一个现成的方法了
- IOS面试题5
- 此生,你是我的唯一
- 关于二分查找的深入讨论
- 整数划分问题 递归法
- 【wikioi1080】 线段树练习
- Android Camera简述-转载
- 我们定义一个比较器
- ( 1)设备驱动模型