一:C#把数据类型分为值类型和引用类型

  1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用。

  1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上。存储位置的不同会有不同的影响。

例如int类型是值类型:int x,y; x=10;y=x;y=20;前三个语句会在内存的两个地方存储值10。改变y的值不会影响x。

如果已经定义了一个类Test,Test是一个引用类型,有一个int类型的成员变量value,执行完如下代码后,只有一个Test对象。x和y都指向包含该对象的内存位置,申明这两个对象只保留一个引用而不会实例化给定类型的对象。创建对象必须使用new关键字。由于x和y引用同一个对象,所以对y的修改会影响x。因此结果为10和20

Test x, y;
x=new Test();
x.Value = 10;
y = x;
Console.WriteLine("X的值为:"+x.Value);
y.Value = 20;
Console.WriteLine("X的值为:" + x.Value);
Console.ReadKey();

二:CTS类型

  2.1C#认可的基本预定义类型没有内置于C#语言中,而是内置于.NETFramework中,例如申明一个int类型的数据时,实际上是System.Int32的一个实例,其意义在于可以把所有的基本数据类型看成支持某些方法的类。例如把int i转换为string,可以使用string s = i.ToString();

  引用类型和值类型都继承自System.Object类。不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.ValueType。

  预定义的值类型包括整形、浮点类型,decimal类型,bool类型,字符类型等。预定义的引用类型 根类型Object类型,string类型。

  2.2 string类型,string类型是引用类型,但是与引用类型常见的行为有一些区别。字符串是不可改变的,修改其中一个字符串就会创建一个全新的string对象,而另一个字符串不发生变化。string类型的很多操作反而看起来和值类型相似,例如:

       

          

三:关于值类型和引用类型判断是否相等。

  3.1 当比较两个值类型时,进行的是内容比较;而比较两个引用类型时,进行的是引用比较。示例如下:

  3.2 string 是一个例外,string比较可以直接使用==或Equal(),CLR对string类型的比较会比较其值而不是引用。这点看起来更像是值类型的特性,而实际上是重载了运算符 "==" 和方法Equals ,系统解析的时候会直接比较String 的内容。

关于值类型和引用类型的值传递和引用传递可看下一篇:

C#学习笔记(基础知识回顾)之值传递和引用传递

C#学习笔记(基础知识回顾)之值类型和引用类型的更多相关文章

  1. C#学习笔记(三):值类型、引用类型及参数传递

    值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚 ...

  2. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  3. C#基础(六)——值类型与引用类型

    CLR支持两种类型:值类型和引用类型. 值类型包括C#的基本类型(用关键字int.char.float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型):而引用类型 ...

  4. c#基础语言编程-按值类型和引用类型传递参数

    引言 在介绍传递参数介绍前,请明白参数类型和传递方式是不同的.传递方式分为按值类型和引用类型传递参数.参数类型有值类型和引用类型,这个和C++是不同的.这里的传递方式对应c++中的深复制和浅复制. 两 ...

  5. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

  6. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  7. GO Lang学习笔记 - 基础知识

    Go lang Learn Note 标签(空格分隔): Go Go安装和Go目录 设置环境变量GOROOT和GOPATH,前者是go的安装目录,后者是开发工作目录.go get包只会将包下载到第一个 ...

  8. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  9. php学习笔记——基础知识(2)

    9.PHP语句 if 语句 - 如果指定条件为真,则执行代码 if...else 语句 - 如果条件为 true,则执行代码:如果条件为 false,则执行另一端代码 if...else if.... ...

  10. php学习笔记——基础知识(1)

    1.PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果. 2.基础 PHP 语法 1)PHP 脚本可放置于文档中的任何位置. 2)PHP 脚本以 <?php 开头,以 ?> ...

随机推荐

  1. 磁盘IO的概念

    转载自:http://blog.csdn.net/letterwuyu/article/details/53542291 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下 ...

  2. python 对mongodb进行压力测试

    最近对mongoDB数据库进行性能分析,需要对数据库进行加压. 加压时,最初采用threading模块写了个多线程程序,测试的效果不理想. 单机读数据库每秒请求数只能达到1000次/s.而开发的jav ...

  3. linux 将进程或者线程绑定到指定的cpu上

    基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性:再简单的点的描述就将指定的进程或线程绑定到相应的 ...

  4. Saiku 系列

    1.Saiku2.6 Saiku315 链接SQL的JDBC字符串 2.Saiku2.6 配置数据源 3.Saiku2.6 保存查询后,重新打开报 Error Loading Query错误. 4.C ...

  5. asp.net core实时库:SignalR(1)

    SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...

  6. linux下启动tomcat服务的命令是什么

    Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/ ...

  7. 一个好用的ssh终端:MobaXterm

    WSL由于没有图形界面,所有操作都是在命令行里执行,平时用来编译和跑CFD代码其实还是挺方便.不过有时候要查看WSL里的文件就比较麻烦,这时可以用SFTP这类工具,连接过去后直接操作文件.试过几个这类 ...

  8. easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0.0.0:7300 解决方案

    easy-mock本地部署成功后,迫不及待的想看看是否能正常访问,执行命令 npm run dev 启动项目,访问 127.0.0.1:7300 ,结果郁闷的是报错:EADDRNOTAVAIL 0.0 ...

  9. 最新版IntelliJ IDEA2019.1破解教程(2019.04.08更新)

    [原文链接]:https://www.tecchen.xyz/idea-crack.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力有限,对文章 ...

  10. 【总结】sqli-labs Less(1-35) 小结

    0x00   工具 phpstudy2016:链接:http://pan.baidu.com/s/1bpbEBCj 密码:fmr4 sqli-labs-master:链接:http://pan.bai ...