偵錯複雜物件時,預設視窗常顯示過多雜訊。善用 System.Diagnostics 命名空間下的兩個屬性,即可精簡偵錯視圖、突顯關鍵資訊。
套用於屬性、欄位、索引子,建構函式接受 DebuggerBrowsableState 列舉:
| 狀態 | 行為 |
|---|---|
Collapsed | 預設值,節點以摺疊狀態顯示。 |
Never | 完全隱藏該成員,不出現在偵錯視窗。 |
RootHidden | 隱藏根節點,直接顯示子元素(適用於集合/陣列)。 |
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("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。