C# 如何为类中的值类型变量分配内存
我在下面有一个类,它是一个带有值类型变量的方法 请有人给我解释一下,当我创建下面的对象时,堆栈上会有什么,堆上会有什么 我对C# 如何为类中的值类型变量分配内存,c#,.net,C#,.net,我在下面有一个类,它是一个带有值类型变量的方法 请有人给我解释一下,当我创建下面的对象时,堆栈上会有什么,堆上会有什么 我对Method1中的变量的位置感兴趣 class A { public void Method1() { int i = 10; } } A obj = new A(); obj.Method1(); 对象本身放在堆上(因为它是引用类型),对类的引用(obj)放在堆栈上,局部变量int i是一个值类型,放在堆栈上,或者进行优化,或者放
Method1
中的变量的位置感兴趣
class A
{
public void Method1()
{
int i = 10;
}
}
A obj = new A();
obj.Method1();
对象本身放在堆上(因为它是引用类型),对类的引用(
obj
)放在堆栈上,局部变量int i
是一个值类型,放在堆栈上,或者进行优化,或者放在寄存器中
但是您不应该关心.NET运行时的这些实现细节,因为它们在理论上可能会改变。。。对实现细节进行不必要的依赖性编码是不好的做法。您很可能不需要知道这一点。对您来说,重要的是运行时做什么,而不是它如何做。运行时可以自由选择任何方式来实现局部变量。据您所知,它们可以保存在文件中(尽管这样做没有多大意义) 如果您确实想知道,通常有几种方法可以在内存中表示局部变量:
async
方法的方法中的闭包变量上这可能会被优化掉,无论如何,局部变量不必进入堆栈。它可以在寄存器中,也可以完全优化。