string[] _myStrings = { "Hello", "There", "Happy", "Day" };
public IEnumerable<string> MyStrings1
{
get
{
return new System.Collections.ObjectModel.ReadOnlyCollection<string>(_myStrings);
}
}
public IEnumerable<string> MyStrings2
{
get
{
return from s in _myStrings select s;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经看到一些关于不使用数组用于公共属性的讨论.我一直在使用" MyStrings2公约".有什么理由我应该使用MyStrings1吗?
EL *_*bov 14
简而言之:我认为您的问题是由Jon Skeet - ReadOnlyCollection或IEnumerable用于公开成员集合的完美答案所涵盖的?
另外:
你可以模仿AsReadOnly():
public ReadOnlyCollection<Abc> List
{
get { return new ReadOnlyCollection(list); }
}
Run Code Online (Sandbox Code Playgroud)
更新:
这不会创建副本list.ReadOnlyCollection不复制数据,它直接在提供的列表上工作.见文档:
只读集合只是一个带有包装器的集合,可以防止修改集合; 因此,如果对基础集合进行了更改,则只读集合会反映这些更改.
该构造函数是O(1)操作.
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |