1. 首页
  2. 编程语言
  3. C#
  4. C#中的不可变数据类型介绍(不可变对象、不可变集合)

C#中的不可变数据类型介绍(不可变对象、不可变集合)

上传者: 2021-08-02 22:45:30上传 PDF文件 155.22 KB 热度 28次

可变对象在多线程并发中共享,是存在一些问题的。多线程下A线程赋值到 Name = "大毛" 这一步,其他的线程有可能读取到的数据就是:使用时只能通过Contact2的构造函数来初始化Name和Address字段。Contact2此时即为不可变对象,因为对象本身是个不可变整体。通过使用不可变对象可以不用担心数据完整性,也能保证数据安全性,不会被其他线程修改。幸好的是Net在4.5版本已经提供了不可变集合的基础类库。而旧值依旧会保留一段时间,这会使内存有极大开销,也会给GC造成回收负担,性能也比可变集合差的多。由于string的不可变特性,所以当我们使用string在保存敏感信息时,就需要特别注意。

用户评论