首页 > 其他 > 详细

值类型与引用类型

时间:2017-05-04 01:08:27      阅读:298      评论:0      收藏:0      [点我收藏+]

1、值类型变量与引用类型变量

  从概念上看,值类型直接存储其值,而引用类型存储对其值的引用。  

  声明一个值类型变量,编译器在内存的栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。

  新建一个引用类型的变量,内存的栈上存放的是实际引用类型变量的值或数据的地址,实际的数据则保存在堆中。

2、值类型与引用类型都有哪些?

值类型:C#的所有值类型均隐式派生自System.ValueType:

  • 结构体:struct(直接派生于System.ValueType);
  • 数值类型:
  1. 整型:sbyte(System.SByte的别名),short(System.Int16),int(System.Int32),long(System.Int64),byte(System.Byte),ushort(System.UInt16),uint(System.UInt32),ulong(System.UInt64),char(System.Char);
  2. 浮点型:float(System.Single),double(System.Double);
  3. 用于财务计算的高精度decimal型:decimal(System.Decimal)。
  • bool型:bool(System.Boolean的别名);
  • 用户定义的结构体(派生于System.ValueType)。
  • 枚举:enum(派生于System.Enum);
  • 可空类型(派生于System.Nullable<T>泛型结构体,T?实际上是System.Nullable<T>的别名)。

C#有以下一些引用类型:

  • 数组(派生于System.Array)
  • 用户用定义的以下类型:
  1. 类:class(派生于System.Object);
  2. 接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C# Programming Language》中说,接口只是表示一种约定[contract]);
  3. 委托:delegate(派生于System.Delegate);
  • object(System.Object的别名);
  • 字符串:string(System.String的别名)。

值类型与引用类型

原文:http://www.cnblogs.com/apollo-shen/p/6804763.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!