c#不可变类型

一、概要

不可变(immutable), 即对象一旦被创建,值就不能被改变,每次改变都会产生一个新对象。

不可变对象如下:

  • string

  • ImmutableStack

  • ImmutableQueue

  • ImmutableList

  • ImmutableHashSet

  • ImmutableSortedSet

  • ImmutableDictionary

  • ImmutableSortedDictionary 

不可变对象的优点:

  • 集合共享安全,从不被改变

  • 访问集合时,不需要锁集合(线程安全)

  • 修改集合不担心旧集合被改变

  • 保证数据完整性,安全性

不可变对象的缺点:

  • 当每次对象/集合操作都会返回新值。而旧值会保留一段时间,会使内存有极大开销,还会给GC造成回收负担,性能也比可变集合差(大约相差近40倍)。

二、详细内容

(1)string

由于string的不可变特性,

  • 所以不建议保存敏感信息例如登录密码存储在内存中,就算会加密置空,但这都是新值。而旧值会长时间存储在共享域内存中,能拿到dump文件就可以看到旧值。建议使用SecureString来进行安全存储,使用时进行恢复及清理。

  • 字符串不可变还意味着操作或方案字符串时不会发生线程同步问题,此外CLR可通过一个stirng对象共享多个完全一致的string内容。这样能减少系统中的字符串数量从而节省内存(称为字符串留用)。

(2)不可变集合

这里主要讲的是应用,不可变集合主要应用场景例如,类似迅雷的下载任务、撤销操作用来记录操作的集合等。这类场景通常不会对其中某一个元素内容进行编辑而且操作元素的频率并不频繁,同时还满足多线程安全避免加锁操作影响程序性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3dmax导出x文件插件2020_C4D与unity3D,3DMAX,AI,AE,ks之间互导

一,C4D与unity3D互导C4D——unity3DC4D导入unity3D遇到的各种问题1.在C4D里挤压的模型转换为可编辑对象了,但是导入Unity以后,模型的封顶没了?2.导入到Unity中发现在里面查看模型丢面和少模型的问题,而且素材也少了好多…

128位计算机 ps2,64位就是最强电脑?难道就没有128位的电脑吗

知道两个系统版本的不同,很多软件是不能通用的。还记得几年前内存价格下降,很多朋友都升级了大的内存,而有的玩家安装内存之后发现32位的系统不支持3.25G以上的内存,也让一些玩家耿耿于怀,网上出现了很多让32位系统支持…

还在为孩子学不好数学而犯愁?你想要知道的或许在这!

▲数据汪特别推荐点击上图进入玩酷屋记得寒假时,超模君七岁小表弟来问了我一道题目:下面线段有多少条?首先我问了他什么是线段?他说:两端有端点,不可以伸长的直线。AB就是线段。我慢慢引导,假如…

MySQL IFNull 详解

MySQL ifnull()函数和nvl()函数类似,但是也有所不同,下面就为您详细介绍MySQLifnull()函数 ,希望可以让您对MySQL ifnull()函数有更深的认识。 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回e…

NET问答: 如何从 event 中移除所有的 handler ?

咨询区 Carrick:我知道在 Control 上如何新建一个 Handler。c.Click new EventHandler(mainFormButton_Click);或者这样c.Click mainFormButton_Click;也知道如何从 event 上移除一个 handler。c.Click - mainFormButton_Click;现在的疑问是:如果简单粗…

ddr4服务器内存频率_镁光出样DDR5内存;紫光发布P5160系列SSD!

今 日 资 讯 1镁光出样DDR5内存2020年AMD、Intel即将推出的新一代CPU处理器还会支持DDR4内存,但是下一代DDR5内存已经近在眼前,2021年就会正式上市。近日镁光宣布开始向客户出样最新的DDR5内存,基于1Znm工艺,性能提升了…

计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...

补充资料:ω-有限自动机ω-有限自动机ω-finite state automata1094。一youx一anz}dongJ-。.有限自动机(。一rinite state automata)一种在无限串上运行的有限状态自动机,是一种。一语言的识别模型。主要研究。一的各种识别方式以及在通常的五种识别条件…

数据时代,信息的无处遁形

从数据中抽取信息从信息中挖掘知识随着大数据时代的到来,数据挖掘的重要性越发显著。可谓是兵马未至,数据先行。所谓数据挖掘,一般是指从大型数据库中将隐藏的预测信息抽取出来的过程,而更为精确的解释就是“从数据中挖掘知识”。…

artDialog对话框在PHP下的简单应用-artDialog弹出层篇

本教程使用的是artDialog 4.1.7版本,由于需要iframe的支持,所以选择这个版本,artDialog 5.0.3不支持iframe。 本教程是基于本站站长在网页设计写代码过程中与PHP页面交互的应用,部分表单类功能基于artDialog iframe来完成的。也许…

Dotnet Core应用跨框架版本运行

有时候,我们真想用新框架,可也真不想改代码。有一个前置的知识需要了解,就是微软 Dotnet Core 框架的版本体系。我前边的文章「Dotnet Core使用特定的SDK&Runtime版本」有详细的说明,可以去翻翻看。前言有一个旧应用&#xff…

服务器运行慢都有哪些问题,服务器数据库的运行速度很慢问题

我的服务器运行速度很慢。察看oracle进程。显示如下:oracle7 26111 26087 0 Apr-29 ? 00:00:04 oracledfjforacle7 5268 1 0 13:40:11 ? 00:00:01 oracledfjf (LOCALNO)oracle7 25169 1 0 15:05:48 ? 00:00:00 ora_dbw…

dw自动滚动图片_3分钟搞定图片懒加载

什么是图片懒加载图片的懒加载就是在页面打开的时候,不要一次性全部显示页面所有的图片,而是只显示当前视口内的图片,一般在移动端使用(PC端主要是前端分页或者后端分页)。为什么需要懒加载对于一个页面加载速度影响最…

获利40多万,工地技术员自学开发外挂被抓

全世界只有3.14 % 的人关注了数据与算法之美今年年初,江苏省公安厅召开新闻发布会,通报全省公安机关开展“净网”专项行动战果。随后平安江苏 在微博中公布了多个案件,其中有个涉及利用技术定位侵犯公民个人信息的案件。【案发】欠债老板在吃…

使用C#在VS Code中编写Notebook

提到大名鼎鼎的Jupyter Notebook,大家应该都听说过。它是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。但是Jupyter Notebook需要使用Python编写代码,对.Neter不太友好。不过,…

缓慢渐变维度的处理方式

维度可以根据变化剧烈程度主要分为无变化维度、缓慢变化维度和剧烈变化维度。例如一个人的相关信息,身份证号、姓名和性别等信息数据属于不变的部分,政治面貌和婚姻状态属于缓慢变化部分,而工作经历、工作单位和培训经历等在某种程度上属于急…

显卡mx150和230哪个好_建模渲染用专业图形显卡和游戏显卡哪个更好?

最近很多朋友让小杨写配置单顺带装机,70%的用户是游戏需求,20%的是设计需求,为数不多的是办公需求,那么问题来了,建模渲染用专业图形显卡和游戏显卡哪个更好?下面小杨给大家深度剖析一番。(建模渲染)今天小…

计算机录取高考生过程,解密高考录取过程:人机结合 打造“阳光高招”

考生的档案怎么被投到志愿高校?每个院校的录取分数线怎么划定?哪些学生容易被退档?15日下午,记者随部分省人大代表探访设在大学城的高招录取现场,为您详解高招录取关键环节。先来看下文史、理工类本一批次实行的按院校平行志愿的网上录取的大致流程&a…

每日一笑 | 如果把大脑看成CPU的话...

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

C# 三种方式实现Socket数据接收(经典)

Stream.Read 方法当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。语法:public abstract int Read(byte[] buffer, int offset, int count)参数:buffer: 字节数组。此方法返回时,该缓冲区…

SQL Sever 性能调优

checkpoint dbcc dropcleanbuffers dbcc freeproccache dbcc freesystemcache(All) dbcc opentran 如何查看磁盘I/O操作信息 SET STATISTICS IO ON 命令是一个 使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。 我们在分析索引性能的时候&…