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这些命令大体的原理解释.所以掌握这个只能说能够应付一定的开发需求.但是如果你是个 ...
随机推荐
- 基于jQuery的简易瀑布流实现
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- Yii javascript 的结合 账号禁用 激活 的设置。
2014-02-16 控制器中的代码: public function actionUpdown(){ //print_r($_POST);die(); if(Buser::model()->u ...
- Xstream 学习地址
http://forestqqqq.iteye.com/category/301129
- linux下文件系统类型的学习
1. 以超级用户权限登陆Linux,进入 /lib/modules/2.6.32--504.el6.x86_64/kernel/fs目录执行 ls 命令(不同Linux发行版本的Fs目录有些不同你可 ...
- 装了maven插件的eclipse中M2_REPO无法编辑、删除(转)
今天用了新版本的eclipse,用maven在命令行生成了一个普通项目.导入eclipse之后发现本地仓库的路径不正确. 显示的为 user.path/.m2/repository 但是我的仓库早已经 ...
- MyEclipse manage Deployment 管理器失效
如果你使用的是10.7版本,可参考本文 出错: 1.Deployments 部署按钮失效; 2.MyEclipse 启动后初始化WorkSpaces抛出Deployment的空指针异常(java.la ...
- 笔记本_hp
1.技术支持 http://support.hp.com/cn-zh 2.搜到的信息:“http://forum.51nb.com/thread-1080424-1-1.html” Product N ...
- java实现excel与mysql的导入导出
注意:编码前先导入poi相关jar包 1 /** * 读excel 到list * * @param file excel file * @param fields 字段数组 * @return * ...
- Java字符串处理函数
substring() 它有两种形式,第一种是:String substring(int startIndex)第二种是:String substring(int startIndex,int end ...
- NTFS reparse point
https://en.wikipedia.org/wiki/NTFS_reparse_point NTFS HARD link: since Windows NT4: files on the sam ...