理解C#系列 / 核心C# / 数据类型
2018-06-21 06:54:09来源:未知 阅读 ()
数据类型
数据类型
C#把数据类型分为两种:值类型和引用类型。
值类型和引用类型
值类型的变量直接指向存储的值,引用类型的变量指向值的引用。[理解:引用就像一个柜子的号码牌,可以顺藤摸瓜找到柜子。假如你再次对一个值类型的变量赋值,那么就会改变值,假如你再次对一个引用类型的变量赋值,那么就只是换了一个号码牌,指向了其他的柜子,对前一个柜子是不做修改的。]
这两种类型的数据存储在内存的不同地方,值类型数据存储在堆栈中,而引用类型的数据(值的引用)存储在托管堆上。
在使用的时候的区别
int i=20; int j=i;
int定义整数类型的变量,整数类型属于值类型,j在赋值的时候复制了i的值,所以这会在内存的两个地方存储值20,如果改变其中一个,不会影响另外一个。
Apple a = new Apple(); a.color = "red"; Apple b = a; b.color = "green";
Apple是我们定义的苹果类型,我们用new Apple()创造了一个实际的苹果,并用引用类型的变量a指向了这个创造的苹果。
在第二行设定了苹果的颜色是红色。
在第三行我们添加了一个新变量,赋值了a这个引用类型的数据,所以b也是指向了a指向的那个苹果,并没有产生第二个苹果。
在第四行,我们修改b指向的苹果的颜色为绿色,这时候实际上查看a.color也会发现苹果的颜色是绿色了,因为始终就只有一个苹果呀。
Apple a = null;
这表示让一个苹果类型的变量不指向任何实际的苹果,如果你想使用这个变量a代表的实际的苹果,就会报错,因为没有东西呀,怎么能使用呢。值类型的变量就不可以赋值null,这是引用类型的专利。
当已经没有任何一个变量指向某个实例的时候,这个实例就不能被访问到了,CLR的垃圾收集器会定期找寻这样的实例,删除它们,把它们占用的内存返回给操作系统。
预定义数据类型
C#有15个预定义类型,其中13个是值类型,两个是引用类型(string和object)
13个值类型中有8个整型:{分正负的:8位sbyte,16位short,32位int,64位long}{无符号的:8位byte,16位ushort,32位uint,64位ulong}。
13个值类型中有2个浮点类型:{float:32位单精度浮点数}{double:64位双精度浮点数}。
13个值类型中还有:{decimal:通常用于财务计算的128位高精度十进制表示法}{bool:用于包含布尔值true或false}{char:为了保存单个字符的值}。
值类型的赋值方法:
int i = 1234; uint ui = 1234U; long l = 1234L; long x = 0x12ab;//用16进制赋值需添加0x前缀 ulong ul = 1234UL; float f = 12.3F double d = 12.3; decimal d = 12.30M; bool b = true; char c = 'A'; char c = '\n';//转义符
2个预定义的引用类型:{object:根类型,面向对象概念}{string:字符串类型,但拥有许多值类型的特性,使它常被误认为值类型}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 深入delphi编程理解之消息(一)WINDOWS原生窗口编写及消息 2020-01-17
- CPU工作方式、多核心、超线程技术详解[转贴] 2019-01-04
- Delphi 7~XE系列升级安装Indy10.6 2018-12-13
- 针对MSHFlexGrid的一系列通用方法-项目中实践代码分享 2018-06-17
- .Net设计模式_单列模式 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash