【问题标题】:Does system.Decimal use more memory than 'decimal'?system.Decimal 是否比“十进制”使用更多内存?
【发布时间】:2010-12-20 21:54:01
【问题描述】:

我听有人说在 C# 中,大写的 Decimal 比小写的十进制使用更多的内存,因为 Decimal 被解析为小写的十进制并且需要内存。

这是真的吗?

【问题讨论】:

  • 嗯。作为某个用户创建的问题(1807368);问题已删除;问题再次以相当匿名的用户身份重新创建。很有趣。
  • 共享计算机仍以某个用户身份登录。

标签: c# struct uppercase lowercase


【解决方案1】:

没有。

decimal 只是System.Decimal 的别名。它们完全相同,别名在编译时解析。

【讨论】:

    【解决方案2】:

    不,那不是真的。

    decimal 关键字是System.Decimal 类型的别名。它们是完全相同的类型,因此没有内存差异,也没有性能差异。如果使用反射查看编译后的代码,甚至无法判断源代码中是否使用了别名或系统类型。

    但是,您可以在何处使用别名和系统类型有两个不同之处:

    • decimal 别名始终是系统类型,不能以任何方式更改。 Decimal 标识符的使用依赖于导入 System 命名空间。系统类型的明确名称是global::System.Decimal

    • 一些语言结构只接受别名,不接受类型。我想不出decimal 的示例,但是在为枚举指定基础类型时,您只能使用像int 这样的语言别名,而不是像System.Int32 这样的相应系统类型。

    【讨论】:

      【解决方案3】:

      没有。太傻了。

      在 C# 中,decimal 只是 Decimal 的同义词。编译器会将十进制声明视为 Decimal,编译后的代码将与使用 Decimal 一样。

      【讨论】:

      • 恕我直言,这不是“愚蠢的”——这是一个完全有效的问题,特别是如果你来自 java 背景,差异是装箱与未装箱 - 即很大的差异。 碰巧在 C# 中它们是相同的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      相关资源
      最近更新 更多