gpt4 book ai didi

c# - 为什么List<>实现了RemoveAll,而IList<>却没有

转载 作者:太空狗 更新时间:2023-10-29 20:23:38 27 4
gpt4 key购买 nike

我正在重构我的代码以使用 IList 而不是 List。我在几个地方使用了 List.RemoveAll,并注意到 IList 根本没有这个方法。这有什么好的理由吗?

最佳答案

软件工程中有一个原则叫interface segregation .它归结为较小的接口(interface)比较大的接口(interface)更好的概念。当这个想法发挥到极致时,理想的接口(interface)只声明一个成员——但我们不要为此烦恼。重点是接口(interface)应该描述严格的要求,而不是方便的特性。

在我们的具体案例中,IList<T>接口(interface)声明需要实现类型的成员才能成为 IList<T> .显然,实现 RemoveAll 不需要类型。为了成为IList .类型这样做很方便,但这不是必需的。

不过,这是扩展方法的有效用例。您可以定义自己的 RemoveAll任何 IList<T> 的扩展方法并保持方便。

关于c# - 为什么List<>实现了RemoveAll,而IList<>却没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com