c# - 如何在 C# 中创建原始数据类型?

标签 c# primitive-types

System.floatSystem.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/

相关文章:

c++ - 传递右值引用函数参数时如何从原始类型变量复制

java - 极少数在处理时如何表现?

javascript - 在 JS 中,为什么我能够使用诸如 toFixed() 之类的函数,它驻留在原始类型的 Number 包装器对象的原型(prototype)中?

c# - 动态 linq 查询不工作

c# - 除了 SSN 之外的任何正则表达式

c - 在 double (*foo)[2] 中 [2] 代表什么

casting - 什么特征可以用于标量转换?

c# - Generic.xaml - 引用样式

c# - Microsoft Fakes Framework - 我无法使用内部类

c# - 如果关闭表单,为什么控件计数会减少?