我对理解 .NET 中的值类型表示有疑问。 每个值类型都派生自 System.ValueType 类,那么这是否意味着值类型是一个类?
例如,如果我写:
int x = 5;
这意味着我创建了一个 System.Int32
类的实例并将其写入变量 x??
最佳答案
System.ValueType 类实际上只是一个“元”类,其内部处理方式与普通类不同。结构和原始类型隐式继承 System.ValueType,但该类型在运行时实际上并不存在,它只是程序集标记应将类视为值类型结构并采用按值传递语义的一种方式。
与其他答案相反,值类型并不总是分配在堆栈上。当它们是类中的字段时,当实例化该对象时,它们就像类数据的其余部分一样位于堆上。当在迭代器或闭包中使用时,局部变量也可以提升到隐式类中。
关于c# - .NET 中的值类型实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921777/