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

use*_*153 3 c#

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

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

rai*_*7ow 8

Type.IsPrimitive文档页面中,有一个完整的基元类型列表:

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

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

预定义的引用类型是objectstring.类型object 是所有其他类型的最终基本类型.该类型string用于表示Unicode字符串值.

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


myr*_*lav 6

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

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

int myIntVar = 3;

代替

System.Int32 myIntVar = 3;

但这只是语法上的差异。

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

在此输入图像描述

希望这可以帮助。

  • 本文描述了这种情况:https://learn.microsoft.com/en-us/dotnet/csharp/misc/cs0075 (3认同)
  • @HéctorÁlvarez - `(System.Int32) -a` 无效,但 `-(System.Int32)a` 有效。不过,“-(int)a”和“(int)-a”都是有效的。 (2认同)