返回ICollection比List有什么优势可能重复:List(ofT)和Collection(ofT)有什么区别?我有一个静态类和一个getter来返回我的列表集合。现在我阅读并被告知返回ICollection而不是List。使用公共静态ICollection而不是公共静态列表有什么好处?静态类存储{私有静态列表存储;静态存储(){存储=新列表();}publicstaticICollectiongetList{get{returnstore.AsReadOnly();}}publicstaticvoidaddString(stringadd){store.Add(add);}publicstaticvoidremoveString(stringremove){store.Remove(remove);}publicstaticvoiddisplay(){foreach(Stringviewinstore){Console.WriteLine(view);}}}}列出实现以上所有功能。使用更简单的接口作为参数或返回值的好处是,它为调用者提供了更大的灵活性,并且可以帮助记录对象的使用方式(或用于返回值)。这是一种很好的做法,并且更易于维护。如果您使用接口而不是类型,则代码不会硬编码为该类型(List)。示例:假设您稍后决定更改存储类以将数据保存在另一种存储类型(即数据库、XML等)中。您可以使用EntityFramework连接到数据库,或者您可以使用LINQ-to-objects。事实上,您可能要考虑使用IEnumerable或IEnumerable。这些类型适用于LINQ以及大多数其他类型集合。因此,您可以在不更改返回类型的情况下转换为LINQ,并重新编写处理Storage类的所有代码。另外,也许string也不是最好的选择?你在收集什么?也许您应该为要存储的对象(即名称)创建一个类。然后你想返回一个IEnumerable。类名称{公共字符串名称{得到;放;}}稍后您可能希望将FirstName和LastName访问权限添加到您的类中:className{publicstringNameget{returnstring.Format("{0}{1}",FirstName,LastName);}publicstringFirstName{get;放;}publicstringLastName{get;放;通过使用IEnumerable,您无需更改任何使用代码即可执行此操作-只要您支持Name类的原始接口,就可以在不破坏任何内容的情况下添加额外的功能。现在,如果您迁移到不同的返回类型,您还应该考虑将处理Storage的所有代码迁移到新类型。当您在代码中的任何地方都有“存储类型”时,您就很难更改。您现在可能不明白这一点,但是当您成为更好的程序员或自己发现未来的变化时,您将看到使用允许更改基础类型的接口的好处。当您选择对象类型并在第一次修订中容纳它们时,请尝试预测未来的可能性,以免您在以后添加时头疼。如果您问为什么要在对象上返回一个接口,那么该接口描述了该对象的作用以及如何使用它,而不是要求特定的实现。它使代码更通用。如果您问为什么是Collection而不是List,那么Collection并不意味着列表而是列表。技术术语是集合“较弱”,因此适用于更多情况。如果您不需要订购,请使用Collection。否则,使用列表。以上就是C#学习教程:返回ICollectionoverList有什么优势?所有分享的内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
