已经有一个现成的方法了

来源:互联网 发布:阿里云.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相等,我们就认为他们是同一位帅哥。
0 0
原创粉丝点击