c# – 如何返回集合的只读副本
发布时间:2020-12-15 06:55:39 所属栏目:百科 来源:网络整理
导读:我有一个类包含一个集合.我想提供一个返回集合内容的方法或属性.如果调用类可以修改单个对象,但是我不希望它们从实际集合中添加或删除对象,那么可以.我已经把所有的对象复制到一个新的列表中,但是现在我想我可以把列表作为IEnumerable返回. 在下面的简化示例
我有一个类包含一个集合.我想提供一个返回集合内容的方法或属性.如果调用类可以修改单个对象,但是我不希望它们从实际集合中添加或删除对象,那么可以.我已经把所有的对象复制到一个新的列表中,但是现在我想我可以把列表作为IEnumerable<>返回.
在下面的简化示例中,GetListC是返回集合的只读版本的最佳方式? public class MyClass { private List<string> mylist; public MyClass() { mylist = new List<string>(); } public void Add(string toAdd) { mylist.Add(toAdd); } //Returns the list directly public List<String> GetListA { get { return mylist; } } //returns a copy of the list public List<String> GetListB { get { List<string> returnList = new List<string>(); foreach (string st in this.mylist) { returnList.Add(st); } return returnList; } } //Returns the list as IEnumerable public IEnumerable<string> GetListC { get { return this.mylist.AsEnumerable<String>(); } } } 解决方法
您可以使用
List(T).AsReadOnly() :
return this.mylist.AsReadOnly() 这将返回 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容