C#入门篇6-7:字符串操作 看看字符串的特殊之处 值类型与引用类型的区别
//看看字符串的特殊之处值类型与引用类型的区别 public static void CompareString(string stra, string strb, int i) { #region 总结 :值类型与引用类型的区别 /* string 是引用类型,但在使用时有表现出一些值类型的特点 string 是只读的,不能修改该对象实例的值,实际操作中对 该对象的修改返回的是该对象的新的实例。 string 对象保留在堆上,而不是栈上。 当相同的字符串赋值到两个string变量时,会得到相同的内存 中的字符串的两个引用,这样可以提高效率 字符串是经常使用的基本数据类型并且是只读的类型,没有必要 把相同的字符串在内存中保留多个副本【只要保留引用就行了】 * 值类型的数据存储在内存的栈中,引用类型的数据存储在内存中的堆中 * 而内存单元中只存放堆中对象的地址 * * 内存结构图 * 值类型存取速度快,引用类型存取速度慢 * 值类型表示实际的数据,引用类型表示指向存储在内存堆中的数据的指针或引用 * * 值类型继承自System.ValueType,应用类型继承自object * * 栈内存的分配是自动释放,而在.NET中会有GC释放 * 值类型不能直接赋值null,引用类型可以 */ #endregion bool result = false; switch (i) { : result = string.Equals(stra, strb); break; : result = string.ReferenceEquals(stra, strb); break; : strb += "o"; result = string.Equals(stra, strb); break; : strb += "o"; result = string.ReferenceEquals(stra, strb); break; } if (result) { Console.WriteLine("字符串与字符串是一致的!!!"); } else { Console.WriteLine("字符串与字符串是不一致的!!!"); } }
C#入门篇6-7:字符串操作 看看字符串的特殊之处 值类型与引用类型的区别的更多相关文章
- 【Unity|C#】番外篇(1)——6个重要概念:栈与堆,值类型与引用类型,装箱与拆箱
传送门:https://www.cnblogs.com/arthurliu/archive/2011/04/13/2015120.html
- 第2篇 C#数据类型-值类型与引用类型
一 C#内存分配 在应用程序与操作系统之间有一个"中间人"--公共语言运行时(Common Language Runtime,CLR).它为应用程序提供内`存管理,线程管理和远程处 ...
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class ...
- C#基础篇五值类型和引用类型
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01M ...
- C#中值类型,引用类型,字符串类型的区别(内存图解)
如果用图片来解释值类型,引用类型和字符串类型(引用类型的一种)的区别的话 值类型: 引用类型: string类型:
- Java入门篇(五)——Java的字符串/String类
前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射 下一篇:Farseer.net轻量级ORM ...
- awk字符串操作(字符串链接、传入传出shell变量)
1.awk基础 awk的环境变量及其意义 https://blog.csdn.net/snowpay/article/details/52451718 linux awk命令详解 https:// ...
- GIT入门篇-基本概念与操作
GIT 首先必须说明的是, 这篇文章不是阐述GIT原理性和比较深入的文章.只是对于日常开发中比较常用的需求的总结和GIT这些命令大体的原理解释.所以掌握这个只能说能够应付一定的开发需求.但是如果你是个 ...
随机推荐
- .NET 4.0 任务和并行编程系列
8天玩转并行开发 8天玩转并行开发——第一天 Parallel的使用 8天玩转并行开发——第二天 Task的使用 8天玩转并行开发——第三天 plinq的使用 8天玩转并行开发——第四天 同步机制(上 ...
- grep 简单使用
grep "关键字" file文件名 | tail -100|grep "关键字" --col grep的功能 grep从一个或多个文本文件中查 ...
- <<易货>>项目Postmortem结果
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 一开始想做的事情还是太多,没有形成整个app的核心功能,浪费了很多时间. 是否有充足的时间来做计划? 有 ...
- SAP 关于标准成本、计划成本、目标成本、实际成本
SAP 关于标准成本.计划成本.目标成本.实际成本 <A style="MARGIN-RIGHT: 10px" target=_blank data-ext="{v ...
- Android开发设计模式之——单例模式关于线程不安全问题处理
单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到.比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenH ...
- Android星星评分控件RatingBar的使用
在Android的开发中,有一个叫做评分控件RatingBar,我们可以使用该控件做等级划分.评分等作用,星星形状显示,也可以半星级别,我们来看一下评分控件如何使用. 布局文件中定义控件以及属性,这里 ...
- activiti jbpm相关资源
Activiti 5.16 用户手册 http://www.mossle.com/docs/activiti/index.html jBPM 4.4开发指南 http://www.mossle.com ...
- JAVA获取当前系统时间System.currentTimeMillis()
System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMi ...
- iOS开发 字符串添加行间距
+ (CGFloat)achiveWidthAttrString:(NSAttributedString *)attrString withHeight:(CGFloat)height { CGRec ...
- Element can be click when out of view
WebDriver can't action the element when out of view Webdriver can't action the element when the elem ...