多年以来,我们大多数时候都使用通用集合.有时我们确实需要任何东西的集合(好吧,通常只有几个不同的东西,但没有共同的基类).对于这种情况,我们可以使用或者IList泛型IList<object>作为方法参数和属性的类型.
有什么理由比较喜欢一个吗?性能特点?
就个人而言,我倾向于IList<object>,因为我认为这更清楚地表明我们确实接受了"任何事情".当输入参数时,IList我们无法立即判断此方法是否接受任何内容,或者缺少泛型是由于历史记录还是草率编码.
有一个很好的理由:LINQ及其扩展方法.这些没有针对pre-generics时代类型实现.您将需要调用Cast<T>上IList采取LINQ的优势!
另一点是,由于最新的.NET版本支持协方差和逆变,并且大多数通用接口支持一种或另一种(fe IEnumerable<out T>,T是协变),因此您可以轻松地将接口的通用参数向下或向下转换为对象或更少非特定类型.
结论:为什么应该首选仿制药?
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |