system.Decimal 是否比“decimal”使用更多内存?
我听到有人说在 C# 中,大写十进制比小写十进制使用更多的内存,因为小写十进制被解析为小写十进制,这需要内存。
这是真的吗?
I heard someone say that in C#, capital Decimal is using more memory than lower case decimal, because Decimal is resolved to the lowercase decimal and that requires memory.
Is that true?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不。
decimal
只是System.Decimal
的别名。它们完全相同,并且别名在编译时解析。No.
decimal
is simply an alias forSystem.Decimal
. They're exactly the same and the alias is resolved at compile-time.不,那不是真的。
decimal
关键字是System.Decimal
类型的别名。它们是完全相同的类型,因此没有内存差异,也没有性能差异。如果使用反射来查看编译后的代码,甚至无法判断源代码中是否使用了别名或系统类型。不过,可以使用别名和系统类型的地方有两个区别:
decimal
别名始终是系统类型,不能以任何方式更改。Decimal
标识符的使用依赖于导入System
命名空间。系统类型的明确名称是global::System.Decimal
。某些语言结构只接受别名,而不接受类型。我想不出
decimal
的示例,但是在指定枚举的基础类型时,您只能使用像int
这样的语言别名,而不是像int
这样的相应系统类型code>System.Int32.No, that is not true.
The
decimal
keyword is an alias for the typeSystem.Decimal
. They are the exact same type, so there is no memory difference and no performance difference. If you use reflection to look at the compiled code, it's not even possible to tell if the alias or the system type was used in the source code.There is two differences in where you can use the alias and the system type, though:
The
decimal
alias is always the system type and can not be changed in any way. The use of theDecimal
identifier relies on importing theSystem
namespace. The unambiguous name for the system type isglobal::System.Decimal
.Some language constructs only accept the alias, not the type. I can't think of an example for
decimal
, but when specifying the underlying type for an enum you can only use language aliases likeint
, not the corresponing system type likeSystem.Int32
.不,那太愚蠢了。
在 C# 中,decimal 只是 Decimal 的同义词。编译器会将十进制声明视为 Decimal,编译后的代码将如同使用 Decimal 一样。
No. That's just silly.
In C#, decimal is just a synonym for Decimal. The compiler will treat decimal declarations as Decimal, and the compiled code will be as if Decimal was used.