2009-09-22 35 views
4

http://msdn.microsoft.com/en-us/library/x810d419.aspxDebuggerDisplayAttribute - 在評估表達式時它如何選擇語言?

從我們在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#代碼。這是真的?

回答

3

我的解釋是,它總是會以發生的格式來解釋它,看起來很像C#,是的。因此,.用於成員訪問等(與數據綁定相同,使用.進行成員訪問,不管調用者的語言如何)。它也很像string.Format模式,如果你看到關係("{0} - {1}"等)。

當然,如果表達式得到複雜,你可以考慮一個debugger type proxy

4

我發現這個link

有一個不利的方面該電源 雖然 - 因爲 DebuggerDisplayAttribute格式字符串 的評價是編譯器特定的,第一 例如將罰款大多數其他 除VB之外的調試器,但第二個不會因爲其使用C#特定的三元運算符而使用 進行評估。 根據調試器的不同,這將使 顯示類名稱的默認值 值或指示不能評估語法 的哪一部分的錯誤 ;如果您在 多語言環境中工作,或者您的 將您的課程作爲圖書館發送給 客戶,則這可能是 重要。