c# 学习 step by step(5)
在前面我们已经通过一个小例子学习了c#的一些基本知识,但那些东西对你来说是远远不足的,要想学好c#,首先需要搞清楚c#有哪些基本的数据类型,从大的方面来说总共有两类,分别是值类型和引用类型。这两类有哪些不同点,工作机制是什么呢,这就是本节课主要讲解的内容。
我们一开始学习.net Framework底层时,常常有两句话“所有的类型都继承自object类”,“在值类型和引用类型转换时要特别小心”,要搞清楚这些说法的关键是搞清楚每种类型的底层是如何工作的,也就是值类型和引用类型的主要区别在于底层实现是不同的。
首先把值赋给值类型和引用类型的时候,两者的表现是不同的:
Ø 把值赋到值类型的时候,数据存储在堆栈的变量中
Ø 赋值给引用类型的时候,变量只存储一个引用,数据则存储在托管堆中
理解堆栈和堆之间的区别是很重要的。堆栈是一个比较小的内存区域,进程和线程存储大小固定的数据块。无论数据值多少,存储数据类型的字节大小不会变化。而引用类型的大小是不固定的,引用类型的大小不确定意味着它们包含的数据更合适存储在托管堆中,而存储他们的地址有固定的大小,所以可以存储在栈中。
.net的CTS给我们带来了方便,首先,CTS中的所有东西都是对象;其次,所有的类型都继承自Object类型,这就是单继承问题。在CTS值类型最大的特点就是不能为Null,言外之意就是所有的值类型都必须有一个值。但是CTS引用类型是类型安全的指针,可以为空
浙公网安备 33010602011771号