c# - 在 C# 中,具有局部作用域的对象是否使用堆栈?

标签 c# stack

假设我们有

void Foo() {
    var bar = new Bar();
    bar.Woo();
}

CLR 会为局部变量使用堆栈吗?

如果不是,为什么?将堆栈用于范围有限的变量而不是使用更昂贵的垃圾收集器不是更有效吗?

最佳答案

不仅 CLR 需要知道作用域是局部的,而且该对象不会被其他任何地方引用。这需要深入的代码分析,除了最​​微不足道的情况,例如您发布的情况。

关于c# - 在 C# 中,具有局部作用域的对象是否使用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830280/

相关文章:

c - C语言中,可以通过栈指针访问另一个函数中main函数的局部变量吗?

c - 堆栈是向上还是向下增长?

c# - Linq to entity,使用不在运算符中的sql

c# - WhenAny vs WhenAll vs WaitAll vs none,考虑到结果正在被立即使用

c# - 主机不支持 .Net Framework v4

python - 如何增加python中的堆栈大小

c# - 无法增加堆栈大小 Visual Studio 2013 C#

c# - 为什么 C# 似乎不关心一致性?

用户输入的正确值未插入堆栈

java - 创建不可变队列的问题