http://msdn.microsoft.com/en-us/library/x810d419.aspx
从我们在MSDN上看到的情况来看,它说要小心我们在语言和语言之间的变化。我的问题是:编写这些表达式的支持语言是什么?如果各种语言可以做到,它如何检测正在使用哪种语言?
我已经在CLI中创建了我的类,并在c#中编写了表达式,因为它可以工作。我在c ++ / CLI中尝试过,但事实并非如此。
这是我的代码:
[DebuggerDisplay("z = {ToString()} Norm = {System.Math.Round(Norm,2)} Angle = {System.Math.Round(Angle, 2)}")]
现在,尝试使用c ++ / CLI方式:
[DebuggerDisplay("z = {ToString()} Norm = {System::Math::Round(Norm,2)} Angle = {System::Math::Round(Angle, 2)}")]
我的假设是它总是将表达式读作c#代码。这是真的吗?
答案 0 :(得分:4)
我发现了link
这种力量有一个缺点 虽然 - 因为评价 DebuggerDisplayAttribute格式字符串 是编译器特定的,第一个 例子将大多数其他工作 调试器如VB,但第二个 由于其使用,我们不会评估 C#特有的三元运算符。 这取决于调试器 使它显示默认值 类名的值或错误 指示语法的哪一部分 无法评估;这可能是 如果你在一个工作,这很重要 多语言环境,或者如果你 将您的类作为库发送到 客户。
答案 1 :(得分:3)
我的解释是,它总会以发生的格式解释它,看起来很像C#,是的。所以.
用于成员访问等(与数据绑定相同,使用.
进行成员访问,无论调用者的语言如何)。如果您看到关系(string.Format
等),它也很像"{0} - {1}"
模式。
当然,如果表达式太复杂,你可以考虑debugger type proxy。