shuhelohelo’s blog

Xamarin.Forms多めです.

DebuggerDisplay属性でデバッグを便利に

devblogs.microsoft.com

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の中身をウォッチまたはローカルウィンドウで見てみるとこんな感じで、まずは要素の型が表示される。 f:id:shuhelohelo:20190613005028p:plain

各要素の中身を見たい場合は、各要素ごとに一段ずつ開いていかなければならない。

f:id:shuhelohelo:20190613005143p:plain

そこで、DebuggerDisplay属性を指定すると、型の代わりに指定したプロパティの値をトップに表示させることができる。

対象のクラスに次のような属性[DebuggerDisplay("{表示したいプロパティ,nq}")]を指定するだけでよい。 以下はBookクラスのTitleプロパティを指定した場合。

f:id:shuhelohelo:20190613005247p:plain

Priceプロパティを指定した場合。

f:id:shuhelohelo:20190613005432p:plain

nqは表示オプションで、not quotedの略。 これをつけないとダブルクオーテーション付きで表示される。

f:id:shuhelohelo:20190613010750p:plain

各要素の特定のプロパティに何が入っているのかがすぐにわかるので便利。

この要素にほかにどんなオプションがあるのか知りたい。