c# - 为什么使用 'ICollection<T>' ?

标签 c# generics collections

我是一个没有经验的 C# 爱好者,当我还有一点时间时,我会尝试学习一些 C#,就像最近一样。

我正在尝试弄清楚何时使用 ICollection<T> .

我在 YouTube 和在线文档上进行了搜索。但它们涵盖了“如何使用它”,而不是为什么以及何时使用它。例如,像下面这样的标题对我来说会更有帮助:

"Hey, are you always using List<T>? Find out how ICollection<T> could be more helpful!"

外面似乎什么也没有。我认为人们必须以某种间接的方式来学习这一点。无论哪种方式,任何人都可以提供和回答,甚至可能是一个例子,为什么人们会使用它,而不是列表、数组等之一?

编辑:我什至不知道如何提问,因为我不知道自己在说什么。这是引发我兴趣的代码:

ICollection<ValidationResult> validationResultList = new List<ValidationResult>();

这里发生了什么?

最佳答案

简单的答案是,使用 ICollection<T>当您需要比 List<T> 更抽象的东西时(或其他集合,例如 HashSet<T> )。

您使用该接口(interface)是因为您可能不关心具体接收List。您关心的是接收一个实现接口(interface)所约定的方法的对象。您只想知道何时将某些内容传递到您的方法中,然后调用 myArgument.neededMethod() ,您确定该方法将会被实现。

关于c# - 为什么使用 'ICollection<T>' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76068157/

相关文章:

c# - 如何将 git repo 在目录树中向下移动?

c# - 'System.Collections.Generic.List<string>' 到 System.Collections.Generic.List<string>[*,*]

generics - 为实现特征的所有类型实现特征

c# - 测试泛型类型是否为字符串的最佳方法? (C#)

C# HashSet2 的工作方式与标准 C# HashSet 完全相同,无需编译

c# - 将 Visual Studio 2012 中的数据源从 SQLSRV 更改为 MySQL

javascript - 如何使用 jquery ajax 传递数据

java - 如何让java中的Generic Object实现一个接口(interface)

c# - 如何始终保留集合的 n 个元素?

java - 同步映射或同步方法