如何区分类型是ValueType还是RefereceType?

时间:2009-07-23 06:55:29

标签: .net types value-type

一些简单的类型,如int,string,....很容易实现它们是ValueTypes或RefrenceTypes。但我想知道有什么方法可以区分吗?

2 个答案:

答案 0 :(得分:7)

所有结构,枚举和本机类型都是值类型。

在运行时,您可以这样检查:

Type type = typeof(TypeName);

if (type.IsValueType) 
{ 
   //...
}

答案 1 :(得分:4)

字符串不是值类型。

以下列出了最常用的value types

  • bool(System.Boolean)
  • byte(System.Byte)
  • char(System.Char)
  • decimal(System.Decimal)
  • double(System.Double)
  • float(System.Single)
  • int(System.Int32)
  • long(System.Int64)
  • sbyte(System.SByte)
  • short(System.Int16)
  • uint(System.UInt32)
  • ulong(System.UInt64)
  • ushort(System.UInt16)
  • System.DateTime的

除了那些:

  • 任何类型的枚举
  • 任何类型的结构

所有其他类型都是参考类型。