C# DebuggerDisplayAttribute-计算表达式时如何选择语言?

C# DebuggerDisplayAttribute-计算表达式时如何选择语言?,c#,.net,vb.net,C#,.net,Vb.net,从我们在MSDN上看到的内容来看,它表明在不同语言之间转换时,要小心使用哪些表达式。我的问题是:编写这些表达式所支持的语言是什么?如果各种语言都能做到这一点,它如何检测正在使用哪种语言 我已经在CLI中创建了我的类,并用c#编写了表达式,因为它是有效的。我已经在c++/CLI中尝试过了,但那样做就不行了 这是我的密码: [DebuggerDisplay("z = {ToString()} Norm = {System.Math.Round(Norm,2)} Angle = {System.Mat

从我们在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代码。这是真的吗?

我的解释是,它总是以一种恰巧看起来很像C#的格式来解释它,是的。因此
用于成员访问等(与数据绑定使用
用于成员访问相同,无论调用方的语言如何)。如果您看到关系(
“{0}-{1}”
等),它也非常类似于
string.Format
模式

当然,如果表达式太复杂,你可以考虑a。< /p> 我发现这个< /P> 这种力量有不利的一面 尽管如此——因为对 DebuggerDisplayAttribute格式字符串 是特定于编译器的,第一个 这个例子在大多数其他例子中都适用 调试程序,如VB,但第二个 由于其使用,将不会进行评估 C#特定的三元运算符。 这将取决于调试器 使其显示默认值 类名称的值,或一个错误 指示语法的哪一部分 无法评估;这可能是 如果你在一家公司工作,这一点很重要 多语言环境,或者 将类作为库发送到 顾客