gpt4 book ai didi

c# - IList 和 IList 之间的比较 - 应该首选哪个?
转载 作者:行者123 更新时间:2023-11-30 15:00:53 25 4
gpt4 key购买 nike

多年来,我们大部分时间都在使用泛型集合。有时我们确实需要任何东西的集合(好吧,通常只有一些不同的东西但没有公共(public)基类)。对于这种情况,我们可以使用 IList或通用 IList<object>作为方法参数和属性的类型。

有什么理由偏爱其中之一吗?性能特点?

就我个人而言,我倾向于 IList<object> ,因为我认为这更清楚地表明我们确实接受“任何东西”。当参数键入为 IList 时我们不能立即判断这个方法是否接受任何东西,或者缺少泛型是由于历史还是草率的编码。

最佳答案

有一个很好的理由:LINQ 及其扩展方法。这些未针对前泛型时代类型实现。 您需要调用 Cast<T>IList 上利用 LINQ!

另一点是,由于最新的 .NET 版本支持协变和逆变,并且大多数通用接口(interface)都支持其中之一(例如 IEnumerable<out T>T 是协变的),您可以轻松地向下转换或向上转换接口(interface)的通用参数from 和 to 对象或不太明确的类型。

结论:为什么应该首选泛型?

  • 通用类型具有更好的性能,因为它们避免了很多类型转换。
  • 较新的 API 依赖于通用集合和接口(interface)。
  • 有很多理由认为在同一个列表中混合不同类型的对象可能是危险的并且是糟糕的编码/设计决策。在少数情况下,您将存储任何类型的对象,拥有 LINQ 和许多其他更新的 API 和功能作为您的 friend 是不重新发明轮子并节省大量时间的有力理由!

关于c# - IList 和 IList<object> 之间的比较 - 应该首选哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051046/

25 4 0