在C#中有两种类型的数据,一种是值类型数据,一种是引用类型数据。在编码的时候区分这两种类型数据,可以避免一些细小的编码错误。 
  首先说说什么类型是值类型,例如:int、float、bool之类的基础类型,以及用struct定义的类型,如:DateTime。除此外,如string,数组,以及用class定义的类型等都是引用类型。对于C#来说,很难罗列出所有类型进行一一分别,这需要自己在编码过程中进行分析总结。
  为了更好地说明两种类型之间的区别,借用如下的表格来说明。
 | 
值类型 | 
引用类型 | 
内存分配地点 | 
分配在栈中 | 
分配在堆中 | 
效率 | 
效率高,不需要地址转换 | 
效率低,需要进行地址转换 | 
内存回收 | 
使用完后,立即回收 | 
使用完后,不是立即回收,等待GC回收 | 
赋值操作 | 
进行复制,创建一个同值新对象 | 
只是对原有对象的引用 | 
函数参数与返回值 | 
是对象的复制 | 
是原有对象的引用,并不产生新的对象 | 
类型扩展 | 
不易扩展 | 
容易扩展,方便与类型扩展 | 
  通过如上细致对比,大家对于值类型和引用类型有个清楚的概念。
  不过,无论是对于值类型还是引用类型来说,对于其作为函数参数或者返回值的时候,都是容易犯错误的地方。
  对于值类型来说,当其作为函数参数的时候,希望在函数中被修改,那么直接如下操作是不能被修改的。
public void Increment( int i )
{
  i++;
}
赞
If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
 
 
QQ:154298438
QQ:417480759