我正在尝试使用某些结构调试代码
struct VirtualArrayTest
{
private T[] Array;
private TypeCurrentArray CurrentArray;
private int StartPos;
private int FinPos;
public enum TypeCurrentArray
{
Main = 1,
Temp
}
....
}
我看不到这些变量的当前值(类型VirtualArrayTest
)。我收到消息“运行时无法评估此表达式” 。如果在我的结构中,则具有变量 CurrentArray(枚举)。
我只能通过设置选项“使用托管的兼容模式”来确定此问题。 我确定这个问题对吗?
对于该选项,我不知道它与official documentation有何关系?什么是“默认调试引擎”和“旧版”?为什么“默认调试引擎”不支持检查这些类型的变量?
答案 0 :(得分:0)
其他信息 问题“无法看到VirtualArrayTest类型变量的当前值”与struct CurrentArray(枚举)字段中的结构有关。 也可以通过替换当前创建和初始化结构的变体来确定(也可以通过其他方式(未设置选项“使用托管的兼容模式”))来确定:
VirtualArray ArrayInitial;
ArrayInitial.CurrentArray = TypeCurrentArray.Main;
ArrayInitial.Array = arrInitial;
ArrayInitial.IndxStart = 0;
ArrayInitial.IndxLast = iNumElements - 1;
上一个:
`VirtualArray ArrayInitial = new VirtualArray(arrInitial, TypeCurrentArray.Main);`
或通过显式获取字段 ArrayInitial.CurrentArray 的值(在通过第一种方法创建结构之后),例如,它也将起作用:
var t = ArrayInitial.CurrentArray;
在第一次显式获取此字段的值之后,VS2017调试器将正确显示该类型的所有变量的值(也没有设置选项“使用托管的兼容模式”)。 我不知道,这是错误或功能。