我有一个带有私有(private)静态的类 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);
}
}
}
最佳答案
这取决于客户的期望。如果您的客户希望列表的内容可以更改,那么(模糊地)没关系。如果他们想要一个不变的集合,那么您需要复制一份。
请注意List<T>
一开始就不是线程安全的,当涉及到全局可变状态时,这是一个大红色警告灯,没有明显的同步访问......
(在我看来,拥有全局可变状态是一个开始的问题,会影响可测试性等。以不安全的方式这样做只会让情况变得更糟。)
关于c# - 返回静态只读列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300901/