DebuggerDisplay属性でデバッグを便利に
DebbugerDisplay
属性を使ってデバッグ時の情報をちょっとわかりやすく。
以下のようなコードがあったとして。
using System; using System.Diagnostics; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var a = Enumerable.Range(0, 100).Select(n => new Book() { Title = "hello", Price = 100, }); } } class Book { public string Title { get; set; } public int Price { get; set; } } }
これをデバッグ実行したとき、コレクションa
の中身をウォッチ
またはローカル
ウィンドウで見てみるとこんな感じで、まずは要素の型が表示される。
各要素の中身を見たい場合は、各要素ごとに一段ずつ開いていかなければならない。
そこで、DebuggerDisplay
属性を指定すると、型の代わりに指定したプロパティの値をトップに表示させることができる。
対象のクラスに次のような属性[DebuggerDisplay("{表示したいプロパティ,nq}")]
を指定するだけでよい。
以下はBook
クラスのTitle
プロパティを指定した場合。
Price
プロパティを指定した場合。
nq
は表示オプションで、not quoted
の略。
これをつけないとダブルクオーテーション付きで表示される。
各要素の特定のプロパティに何が入っているのかがすぐにわかるので便利。
この要素にほかにどんなオプションがあるのか知りたい。