C#中为何readonly字典可执行“设置”操作?与非readonly有何区别?
关于readonly字典的疑问解答
为什么readonly字典能执行“设置”操作?
readonly修饰的是类的字段,不是字典这个集合对象本身。它的作用是限制这个字段不能被重新赋值——也就是不能再给这个字段分配一个新的字典实例(比如不能写myDict = new Dictionary<...>())。但字典是引用类型,字段里存的只是指向字典对象的引用,readonly管不到对象内部的状态修改,所以你依然可以给字典添加、修改键值对。
readonly和非readonly字典字段的差异
- 非readonly字段:
- 可以在类的任何方法、代码块里重新赋值,比如随时把它换成另一个字典实例
- 当然也能正常修改字典的键值对内容
- readonly字段:
- 只能在字段声明时或者类的构造函数里赋值,之后再也不能改变这个字段指向的字典对象
- 但和非readonly一样,完全可以修改字典内部的键值对,因为这是对象本身的操作,和字段的readonly限制无关
内容的提问来源于stack exchange,提问作者EBDS
相关产品推荐
相关产品推荐

