C# 接受不同类型的集合作为参数

C# 接受不同类型的集合作为参数,c#,collections,parameters,C#,Collections,Parameters,我有一个方法,它将float类型的集合作为参数。大多数情况下,ReadOnlyCollection会传递给方法,但有时也会传递不同类型的集合,如列表 参数的最佳类型是什么?我应该使用:public void MyMethod(Collection)?这是一种好的做法吗?这取决于您对收藏的处理方式 如果只想对其进行枚举,请传入IEnumerable。如果还需要添加/删除项目,请使用ICollection。如果需要按索引访问,请使用IList 根据您对不同类型的描述,您不需要添加项,因此IEnume

我有一个方法,它将float类型的集合作为参数。大多数情况下,
ReadOnlyCollection
会传递给方法,但有时也会传递不同类型的集合,如列表


参数的最佳类型是什么?我应该使用:
public void MyMethod(Collection)
?这是一种好的做法吗?

这取决于您对收藏的处理方式

如果只想对其进行枚举,请传入
IEnumerable
。如果还需要添加/删除项目,请使用
ICollection
。如果需要按索引访问,请使用
IList

根据您对不同类型的描述,您不需要添加项,因此
IEnumerable
应该可以


一般来说,使用您能使用的最通用的类型(接口多于实现,方法更少的类型多于方法更多的类型)。参见(设计原则中的L)。

+1进一步了解Oded关于支持接口的观点,这为将来更好地组合单元测试铺平了道路(通过接口模拟/存根)。