Visual Studio 的偵錯能力超越了表面,它使用編譯器產生的「魔術名稱」來管理各種程式實體。這些名稱雖然通常在使用者介面中隱藏,但可以實現高級偵錯功能和最佳化。 理解這些命名模式是有效導航調試器內部工作的關鍵。
雖然 Microsoft 沒有公開記錄完整的實作細節,但對 C# GeneratedNames.cs
原始碼的分析揭示了對這些命名約定的寶貴見解。請注意,這些約定如有更改,恕不另行通知。
隱藏變數與暫存:
未使用的局部變數:偵錯器使用 __Deleted$
後綴標記未使用的局部變量,這是編譯器最佳化的明確指示。
臨時變數: 臨時變數使用 CS$X$Y
命名方案:
X
:表示暫時的性質(例如,0 表示短暫,1 表示回傳值,2 表示鎖定語句等)。 下面提供了完整的密鑰。 Y
:標識特定臨時實例的序號。 編譯器產生的特殊名稱:
編譯器為各種內部結構和操作產生唯一的名稱,包括:
state
)current
)locals
)CachedAnonymousMethodDelegate
)iterator
)DisplayClass
)FixedBuffer
)AnonymousType
, Field
, TPar
)BackingField
)finally
區塊 (Finally
)SiteContainer
、Site
、SiteDelegate
)ComRefCallLocal
)LockTaken
)TransparentIdentifier
)神奇的名字公式:
這些魔法名稱的一般模式如下:P<n>C__SI
,其中:
P
:CS$
快取委託和顯示類別實例的前綴;否則,空。 <n>
:原始變數名稱(如果適用)。 C
:表示實體類型的單一字元(1 到 s)。 S
:可選的描述性後綴。 I
:可選的唯一識別碼。 臨時變數類型鍵:
264:字串固定語句暫時
此詳細的細分可以讓您更清楚地了解在 Visual Studio 中偵錯時遇到的經常神秘的名稱。 請記住,此資訊是基於觀察,可能會隨著未來編譯器的更新而變化。
以上是Visual Studio 偵錯器的「神奇名稱」是什麼以及它們如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!