首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Visual Studio 偵錯視窗客製化兩大技巧:DebuggerBrowsable 與 DebuggerDisplay

     編輯:關於.NET

偵錯複雜物件時,預設視窗常顯示過多雜訊。善用 System.Diagnostics 命名空間下的兩個屬性,即可精簡偵錯視圖、突顯關鍵資訊。

技巧一:DebuggerBrowsable 控制成員可見度

套用於屬性、欄位、索引子,建構函式接受 DebuggerBrowsableState 列舉:

狀態行為
Collapsed預設值,節點以摺疊狀態顯示。
Never完全隱藏該成員,不出現在偵錯視窗。
RootHidden隱藏根節點,直接顯示子元素(適用於集合/陣列)。

範例:隱藏 Marks、展開 Address 子屬性

class Student
{
    public int Roll { get; set; }
    public string Name { get; set; }
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    public int Marks { get; set; }
    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public Address Addresses { get; set; }
}

class Address
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
}

偵錯時,Marks 消失,Addresses 直接顯示 Address1/Address2 而無中間節點。

技巧二:DebuggerDisplay 自訂物件摘要顯示

套用於類別或結構,建構函式傳入格式字串,大括號內放屬性名稱:

[DebuggerDisplay("Student: {Name} (Roll={Roll}, Marks={Marks})")]
class Student
{
    public int Roll { get; set; }
    public string Name { get; set; }
    public int Marks { get; set; }
    public Address Addresses { get; set; }
}

偵錯視窗將直接顯示 Student: Abhijit (Roll=1, Marks=87),而非預設的命名空間.類別名。

常見錯誤

大括號內屬性名稱拼錯(如 {Rolls}),偵錯視窗會顯示錯誤訊息 The name 'Rolls' does not exist in the current context。

總結

  • DebuggerBrowsable:篩選、摺疊、扁平化成員樹狀結構。
  • DebuggerDisplay:定義物件在偵錯視窗的單行摘要格式。
  • 兩者搭配,讓大型物件圖的偵錯視圖清爽易讀,聚焦關鍵資料。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved