变量在当前上下文中不存在,尽管它确实存在

时间:2015-02-04 09:10:07

标签: c# visual-studio-2013

我正在运行一个dll的单元测试。

[TestMethod]
public void Test1()
{
    List<MyObject> a = GetData();
}

当我尝试将其更改为以下内容时工作正常但是

[TestMethod]
public void Test1()
{
    List<MyObject> b = GetData();
    List<MyObject> a = GetData();
}

我遇到的问题是,当我到达b上的断点或者它说b在当前上下文中不存在时。但同一条线适用于我的同事。

我已经重新启动了visual studio并清理了解决方案并重建了它。 有人有想法吗?

1 个答案:

答案 0 :(得分:3)

如果您正在调试以发布模式/使用&#39;优化代码&#39;编译的版本,则会发生这种情况。国旗集。

这是因为如果变量知道它们永远不会被使用,那么编译器可以自由地将变量从范围中取出,而调试模式只要它们在语言范围内是范围内的,就会保留变量。

由于b(和a)从未在您的代码中使用,因此编译器是免费的,在发布模式下将代码视为:

[TestMethod]
public void Test1()
{
    GetData();
    GetData();
}

确实如此。