我在公共静态类中有以下代码:
public static class MyList
{
public static readonly SortedList<int, List<myObj>> CharList;
// ...etc.
}
..但即使使用readonly
我仍然可以将另一个类的项目添加到列表中:
MyList.CharList[100] = new List<myObj>() { new myObj(30, 30) };
or
MyList.CharList.Add(new List<myObj>() { new myObj(30, 30) });
有没有一种方法可以使该内容只读而不更改 CharList 的实现(它会破坏一些东西)?
如果我确实必须更改实现(以使其不可更改),最好的方法是什么?
我需要它是 List,所以 ReadOnlyCollection 不行
修饰符readonly http://msdn.microsoft.com/en-us/library/acdd6hb7.aspx意味着该值不能是assigned除了在声明或构造函数中。确实如此not意味着分配的对象变得不可变。
如果您希望对象不可变,则必须使用不可变的类型。方式ReadOnlyCollection<T> http://msdn.microsoft.com/en-us/library/ms132474.aspx您提到的是不可变集合的一个示例。请参阅此相关问题,了解如何对字典实现相同的效果:
- .NET 中有可用的只读通用字典吗? https://stackoverflow.com/questions/678379/is-there-a-read-only-generic-dictionary-available-in-net
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)