何时在IEnumerable <>上使用IEnumerable

时间:2020-03-06 14:53:45  来源:igfitidea点击:

由于.NET框架中缺少通用变量,如果方法被设计为处理多种类型,那么拥有处理System.Collection接口的非通用版本的方法是否更"正确"?

理想情况下,一旦移至.NET 3.5,将对代码进行修改以将这些方法更改为扩展方法。

解决方案

定义"多种类型"是指例如包含汽车和狗的列表吗?或者一个包含汽车的列表,另一个包含狗的列表?除非我们执行"特殊"操作,否则我会说正确的做法是实现通用版本,而不是非通用版本。

这是一篇体面的文章对此进行了解释。

我能看到的唯一解决方案是遵循本文的建议,并使该方法也成为通用方法。

但是,我不确定它将成为扩展方法的程度。

不,更"正确"的事情是使处理多种类型的方法本身成为通用的。

在这种情况下(IEnumerable),实现通用版本会更好,因为它是从IEnumerable(非通用)派生而来的,因此成为有争议的话题,我们都可以使用这两种版本。