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

hat*_*enn 2 c# collections parameters

我有一个方法,它将float类型的集合作为参数.大多数情况下,a ReadOnlyCollection<float>传递给方法,但有时也传递不同类型的集合,如List.

什么是参数的最佳类型?我应该使用:public void MyMethod(Collection<float>)?这是好习惯吗?

Ode*_*ded 6

这取决于你对集合做了什么.

如果您只想枚举它,请传入IEnumerable<float>.如果您还需要添加/删除项目,请使用ICollection<float>.如果您需要通过索引访问,请使用IList<float>.

根据您对不同类型的描述,您不需要添加项目,所以IEnumerable<float>应该没问题.

一般情况下,使用最常用的类型(实现界面,方法少于一个以上的方法).参见Liskov替代原理(SOLID设计原则中的L ).