C# DebuggerDisplayAttribute-计算表达式时如何选择语言?
从我们在MSDN上看到的内容来看,它表明在不同语言之间转换时,要小心使用哪些表达式。我的问题是:编写这些表达式所支持的语言是什么?如果各种语言都能做到这一点,它如何检测正在使用哪种语言 我已经在CLI中创建了我的类,并用c#编写了表达式,因为它是有效的。我已经在c++/CLI中尝试过了,但那样做就不行了 这是我的密码: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
[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#特定的三元运算符。
这将取决于调试器
使其显示默认值
类名称的值,或一个错误
指示语法的哪一部分
无法评估;这可能是
如果你在一家公司工作,这一点很重要
多语言环境,或者
将类作为库发送到
顾客