我有一个私有静态List<String>
集合的类。现在我想返回一个只读列表。这是理想的做法吗?你会用另一种方式吗?这是正确的方法吗?
namespace Test
{
static class Storage
{
private static List<string> store;
static Storage()
{
store = new List<string>();
}
//Is it okay to have a getter in my static class to return my List Collection
public static System.Collections.ObjectModel.ReadOnlyCollection<string>getList
{
get
{
return stores.AsReadOnly();
}
}
public static void addString(string add)
{
store.Add(add);
}
}
}
答案 0 :(得分:2)
这取决于客户的期望。如果您的客户希望列表中的内容可以更改,那么(模糊地)就可以了。如果他们期待不变的集合,那么您需要复制一份。
请注意,List<T>
开始时不是线程安全的,这对于全局可变状态来说是一个很大的红色警示灯,在没有明显同步的情况下访问...
(具有全局可变状态是一个问题,IMO,影响可测试性等。以不安全的方式这样做会使情况变得更糟。)