静态类和Getter

Syl*_*ond 3 c# collections static

我有一个名为Test的静态类和一个私有的List集合.现在我想实现一个getter来将我的List返回给主类.这是正确的方法吗?

其次是可以实现静态构造函数吗?如果没有,我如何正确声明我的列表集合?

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 List<string> getList
   {
       get
       {
           return store;
       }


   }

   public static void addString(string add)
   {
       store.Add(add);
   }

   public static void removeString(string remove)
   {
       store.Remove(remove);
   }
Run Code Online (Sandbox Code Playgroud)

Chr*_*Wue 6

如果在getter中返回对列表的引用,则任何调用者都可以在列表中添加或删除项,而无需通过静态类上的add/remove方法.如果你想阻止任何人修改列表,我会从getter 返回一个只读集合:

public static IEnumerable<string> getList
{
   get
   {
       return store.AsReadonly();
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑

正如Marc指出的那样,您需要注意多线程问题.想象一个线程枚举通过getter获得的集合,而另一个线程通过添加或删除项来修改它 - >你会得到一个例外,说明你在枚举时不能修改它.唯一的解决方案是锁定对私有集合的所有访问,并在getter中返回一个副本.