为什么断点不能评估表达式?

时间:2015-10-06 10:15:20

标签: visual-studio

我有这段代码:

foreach(MyType iterator in myList)
{
    Object myObject = iterator.MyProperty;
}

嗯,这真的不是我的代码,是一个例子,我想要做的是在foreach中设置一个断点并检查iterator.MyProperty是否为null。

在我的断点条件下,我设置:

iterator.MyProperty == null

但我收到错误,因为断点无法评估条件。

我正在使用VS2015社区。

非常感谢你。

2 个答案:

答案 0 :(得分:2)

您的调试器可以读取和测试变量的值。但是它无法执行您的代码。

如果MyPropertyiterator对象中的一个简单变量,它肯定会被调试器的断点条件表达式正确处理。但它可能是一个具有一些getter函数的属性,因此调试器必须在断点处理程序中跳转到您的代码中以获得所需的值 - 并且根本不允许这样做。

答案 1 :(得分:1)

您可以尝试这样:

using System.Diagnostics;
........

foreach(MyType iterator in myList)
{
    if (iterator.MyProperty == null) 
    {
       Debugger.Break();
    }
    Object myObject = iterator.MyProperty;
}

您也可以参考:http://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality