特殊的String

说起值类型和引用类型,大家都知道这么个事,很多时候我们会拿String做值类型来做比较,但实际上String虽然是值类型,却表现的有点特别

String示例

看下面的一个例子:

话说string是引用类型,所以str1和str2都指向同一块内存地址,当修改了str1的值,按理str2取值时也会受到影响!

但实际上我们会发现,修改str1值之后,str2的值并没有受到影响

这是因为.Net Framework对string做了特殊处理,当string的内容改变,.NET会重新给它分配一块内存空间存放新的字符串内容,而不是在老的地址上进行改变

所以 str1=“ccc”时(改变str1的值),.Net申请了一块新内存存放 “cccc”,然后返回一个地址给str1,所以对str1的改变不影响str2

运行结果

引用类型

对于其它的引用类型,我们可以看到它们改变的都是同一块内存地址

示例代码

请看下面的例子:

运行结果

总结一下

引用类型

引用类型有五种:类(Class) ,对象(Object),字符串(string) ,委托(Delegate),接口(Interface)

值类型

除引用类型之外的 ,整形(int),boo,byte,struct,enum

区别

值类型的把值存放在他们自身所分配到的内存中,引用类型只是包含指向内存地址的引用(指针)

最新文章

  1. mysql 基础操作一
  2. Sql Server函数全解<一>字符串函数
  3. Java对象的深拷贝和浅拷贝、集合的交集并集
  4. C语言 · 最小公倍数
  5. Linux系统移植(1) ------搭建交叉编译环境
  6. X-Frame-Options 响应头
  7. 面试准备(二) 绘制 Activity 的生命流程图
  8. Mysql常出现的问题
  9. P2672 推销员
  10. 查看oracle 数据库的DBID
  11. CODEVS 3139 栈练习3
  12. LIS 最长递增子序列问题
  13. Unity -JsonUtility的使用
  14. 浅谈JavaScript和DOM中的类数组对象
  15. Git忽略规则.gitignore梳理
  16. 将Chrome插件Momentum背景图片设为桌面壁纸
  17. Redis学习笔记(1)-安装Oracle VM VirtualBox
  18. Thymeleaf教程入门到深入1:基础介绍
  19. “javac”不是内部或外部命令的解决办法(JDK1.5 ~ JDK10)
  20. 不需要更多JS框架了

热门文章

  1. MVC源码分析 - ModelBinder绑定 / 自定义数据绑定
  2. 命令行下更好显示 postgresql 的查询结果
  3. mysql pdo设置显示报错
  4. Travelling Fee(Dijlstra——最短路问题变型)
  5. C#图片文字识别
  6. 无法将类型“System.Collections.Generic.List<anonymous type:string ClassID,string ClsssName>”隐式转换为“System.Collections.Generic.List<Ecology.Model.EnergyFlowGraph>”
  7. java多线程框架
  8. js 时间格式与时间戳的相互转换示例代码
  9. Spring Boot使用layui的字体图标时无法正常显示 解决办法
  10. TCP连接与OKHTTP复用连接池