C#学习教程:为什么IList实现了IEnumerable和ICollection而ICollection本身又实现了IEnumerable公共接口IList:ICollection、IEnumerable、IEnumerable公共接口ICollection:IEnumerable、IEnumerable公共接口IEnumerable:IEnumerable不能只是公共接口IList:ICollection所以,为了测试,我创建了这些接口,只是为了确保它有效!公共接口IOne{字符串One();}publicinterfaceITwo:IOne{stringTwo();}publicinterfaceIThree:ITwo,IOne{stringThree();虽然完美无缺,但Resharper抱怨“冗余接口”。微软为什么继续这个实现有什么想法吗?接口“继承”是软件工程中最具误导性的术语之一。你没有inheritancesquat,接口没有任何实现,所以你也不能继承它。您只继承实现方法的要求。通过重复接口声明来添加此要求不会改变任何内容,您已经有了要求,添加额外的要求也没有任何区别。因此,Microsoft无论如何都在重用该接口,因此您可以一口气告诉List它实现了哪些接口。您不必深入研究接口声明来查看List是否也实现了IEnumerable。这是一种自我记录的编码风格,推荐使用。请注意这个奖章的另一面,它只需要一个方法实现就可以用完全相同的方法实现两个不同的接口。虽然这通常很有用,但有时并不是您想要的。比如ICowboy和IPainter,它们都有一个Draw()方法。它不应该做同样的事情:)然后你必须回退到显式实现,以避免歧义。解决Resharper投诉,当然不是很有帮助。Resharper倾向于为程序员假设最坏的情况。但是如果你想关闭它,那么你需要从IThreeinheritance列表中删除IOne,这是多余的。对于实现IThree的类也是如此,您还需要从继承列表中删除ITwo和IOne。或者只是关闭警告。以上就是C#学习教程:为什么IList实现了IEnumerable和ICollection以及ICollection本身实现了IEnumerable共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
