2

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

    }
}
4

1 回答 1

2

这取决于客户的期望。如果您的客户期望列表的内容可以更改,那么(模糊)没关系。如果他们期待一个不变的收藏,那么您需要复制一份。

请注意,List<T>从一开始就不是线程安全的,当涉及到全局可变状态时,这是一个大红色警告灯,访问时没有明显的同步......

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

于 2012-09-06T13:15:20.617 回答