前言

这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. 再会有三篇博客  这个系列的就会结束了. 也算是自己对园子中@Learning Hard出版的<<C#学习笔记>>的一个总结了. 博客内容基本上都是白天抽空在公司写好的了, 但是由于公司内部网络不能登录博客园所以只能够夜晚拿回来修改,  写的不好或者不对的地方也请各位大神指出. 在下感激不尽了. 

1,值类型和引用类型
1.1 值类型与引用类型简介
C#值类型数据直接在他自身分配到的内存中存储数据,而C#引用类型只是包含指向存储数据位置的指针。

C#值类型,我们可以把他归纳成三类:
  第一类: 基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。  
                      整型包括:sbyte、byte、char、short、ushort、int、uint、long、ulong这九种类型;
                      浮点型就包括 float 和 double 两种类型;
                        十进制型就是 decimal ;
                      布尔型就是 bool 型了。
  第二类:结构类型:就是struct型
  第三类:枚举类型:就是enum型
 C#引用类型有五种:class、interface、delegate、object、string、Array。
上面说的是怎么区分哪些C#值类型和C#引用类型,而使用上也是有区别的。所有值类型的数据都无法为null的(这里可空类型是可以为空的),声明后必须赋以初值;引用类型才允许 为null。

1.2 值类型与引用类型的区别
值类型与引用类型的区别是面试中经常经常问到的问题,完美的回答当然不能只是简单地重复两者的概念,因为面试官更希望你答出他们之间深层的区别--不同的内存分布
值类型通常被分配到县城的堆栈上,而引用类型则被分配到托管堆上。不同的分配位置导致了不用的管理机制,值类型的管理由操作系统负责,而引用类型的管理则由垃圾回收器(GC)负责。

 1 class Program
 2 {
 3      static void Main()
 4      {
 5           //valueType是值类型
 6           int valueType = 3;
 7           //refType是引用类型
 8           string regType = "abc";
 9      }
10 }
View Code

相关文章: