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

Variable does not exist in current context although it does exist

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

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

当我尝试将其更改为以下内容时效果很好,但是:

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

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

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

如果您正在调试在发布模式下编译/设置了 'Optimise Code' 标志的版本,就会发生这种情况。

这是因为如果编译器知道永远无法使用变量,那么编译器可以自由地将变量移出范围,而调试模式将保留范围内的变量,只要从语言的角度来看它们在范围内。

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

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

确实如此。