C#预定义类型与原始类型?

时间:2012-11-20 00:08:08

标签: c#

我最近一直在研究C#,有一种叫做“预定义类型”的东西。 我认为这是原始类型的另一个名称。 但我的朋友告诉我,那些安静的彼此不同。 只是感到困惑。

这些是相同但不同的名字吗? 还是那些完全不同?

2 个答案:

答案 0 :(得分:7)

Type.IsPrimitive documentation page中有一个完整的基本类型列表:

  

基元类型是布尔,字节,SByte,Int16,UInt16,Int32,   UInt32,Int64,UInt64,IntPtr,UIntPtr,Char,Double和Single。

第1.2.1节(Predefined types)明确区分了这些和预定义的引用类型:

  

预定义的参考类型为objectstring。类型object   是所有其他类型的最终基础类型。使用类型string   表示Unicode字符串值。

所以我猜这很明显它们是不同的 - 至少在.NET术语中。

答案 1 :(得分:0)

预定义是编译器特别支持的类型。它们在 System 命名空间中使用.NET框架类型。它们也被称为内置类型。

编译器如何支持它们?他们有自己的关键字。例如, int 关键字用于预定义 System.Int32 类型。这意味着当您在C#中定义整数变量时,可以通过键入:

来实现

int myIntVar = 3;

而不是

System.Int32 myIntVar = 3;

这只是合成的差异。

原始类型都是预定义的 类型减去 十进制 类型。我做了一个草图来证明这一点:

enter image description here

希望这有帮助。