System.float
,System.int
和其他原语类型如何运作?我从来没有理解如何制作基元结构,我想知道我是否可以创建自己的数字类型。
答案 0 :(得分:67)
假设我们正在谈论一个以公共语言基础结构(CLI)为目标的C#编译器,就像几乎所有内容一样,它基本上使用了CLI公开的基元类型。
实际上需要考虑三个级别的支持:
System.Decimal
。这是也是公共类型系统(CTS)的一部分,这意味着如果在C#中创建const decimal
,您仍然可以在VB中使用它,例如。但仍然没有直接的 IL 支持。BigInteger
- 您可以编写自己的数字类型。第二个项目符号的中间地带允许C#具有十进制文字和十进制常量,第三个项目符号都不可能。例如,BigInteger
没有语言支持,所以你不能写:
// This isn't valid
BigInteger bigInteger = 123456789012345678901234567890;
您必须改为解析字符串表示。同样,您不能拥有const BigInteger
。
(从理论上讲,有可能在C#中有一个支持的类型,但在CTS中却没有。我不知道任何这样的类型。)
答案 1 :(得分:7)
处理器直接支持int
和float
等原始类型,.net平台和语言对它们具有类似的内置支持。所以你无法在语言层面创建自己的原语。