System.float
、System.int
和其他基元类型如何工作?我一直不明白如何制作基元结构,我想知道我是否可以制作自己的数字类型。
最佳答案
假设我们正在谈论一个以公共(public)语言基础设施 (CLI) 为目标的 C# 编译器,就像几乎所有的东西一样,它基本上使用 CLI 公开的原始类型。
实际上可以考虑三个级别的支持:
- 真正的基元,在 IL 中有自己的表示和指令
- C# 编译器具有特殊知识但不属于 CLI 的数字类型 - 基本上是
System.Decimal
。这也是通用类型系统 (CTS) 的一部分,这意味着如果您在 C# 中创建const decimal
,您仍然可以在 VB 中使用它,例如。但是仍然没有直接的 IL 支持。 - 其他数字类型,例如
BigInteger
- 您可以编写自己的类型。
第二个项目符号的中间地带允许 C# 具有十进制文字和十进制常量,而这两者对于第三个项目符号都是不可能的。例如,BigInteger
没有语言支持,所以你不能写:
// This isn't valid
BigInteger bigInteger = 123456789012345678901234567890;
您必须改为解析字符串表示形式。同样,您不能拥有 const BigInteger
。
(理论上,可以在 C# 中支持一个类型,但在 CTS 中不支持。我不知道有任何此类类型。)
关于c# - 如何在 C# 中创建原始数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47387519/