返回静态只读列表

时间:2012-09-06 13:11:43

标签: c# list static

我有一个私有静态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);
        }

    }
}

1 个答案:

答案 0 :(得分:2)

这取决于客户的期望。如果您的客户希望列表中的内容可以更改,那么(模糊地)就可以了。如果他们期待不变的集合,那么您需要复制一份。

请注意,List<T>开始时不是线程安全的,这对于全局可变状态来说是一个很大的红色警示灯,在没有明显同步的情况下访问...

(具有全局可变状态是一个问题,IMO,影响可测试性等。以不安全的方式这样做会使情况变得更糟。)