c# - 返回静态只读列表

标签 c# list static

我有一个带有私有(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/

相关文章:

javascript - JavaScript 中的公共(public)静态对象

java - 如何销毁静态对象? - 测试静态字段时出现问题

c++将数据源函数作为参数传递

c# - 如何从声明为 IEnumerable<T> 的方法/属性安全地返回 List<T>?

c# - 仅在 Windows 服务 : System. Runtime.InteropServices.COMException (0x800A03EC) 中:来自 HRESULT 的异常:0x800A03EC

c# - 使用 axvlcplugin 将 rtsp 视频流式传输到文件

Python比较列表的列表

c# - 无法将类型 'DynamicClass1' 转换为类型 <T>。 LINQ to Entities 仅支持转换 EDM 原语或枚举类型

java - arrays.aslist 添加派生类 java

python - 尝试将 DataFrame 写入 Feather 时出错。 feather 是否支持列表列?