c# - .NET 中的值类型实际上是如何工作的?

标签 c#

我对理解 .NET 中的值类型表示有疑问。 每个值类型都派生自 System.ValueType 类,那么这是否意味着值类型是一个类?

例如,如果我写:

int x = 5;

这意味着我创建了一个 System.Int32 类的实例并将其写入变量 x??

最佳答案

System.ValueType 类实际上只是一个“元”类,其内部处理方式与普通类不同。结构和原始类型隐式继承 System.ValueType,但该类型在运行时实际上并不存在,它只是程序集标记应将类视为值类型结构并采用按值传递语义的一种方式。

与其他答案相反,值类型并不总是分配在堆栈上。当它们是类中的字段时,当实例化该对象时,它们就像类数据的其余部分一样位于堆上。当在迭代器或闭包中使用时,局部变量也可以提升到隐式类中。

关于c# - .NET 中的值类型实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921777/

相关文章:

c# - 数组中相等数字之间的最大距离

C# SNMP 陷阱接收器

c# - C# 和 Java 之间溢出语义的差异

c# - 对 C# 字符的特殊含义感到困惑

c# - 使用 Console.Read() 确定文件结尾 C#

c# - 将 C# ASPNET WebApi 对象的属性映射到 Angular 2,

c# - 你能控制 TagBuilder 类呈现属性的顺序吗?

c# - 我怎样才能找出 kernelbase.dll 中的错误是什么?

c# - 从 SMTP 服务器发送邮件

c# - 当多个用户可以编辑相同数据时首选数据库/webapp 并发设计