|
.NET TIPS
デバッグ時にプロパティ値やフィールド値を簡単に確認できるようにするには?[C#、VB]
デジタルアドバンテージ 遠藤 孝信
2010/03/25 |
|
|
Visual Studioでアプリケーションをデバッグする場合、コードにブレークポイントを設定して実行を中断し、中断個所でオブジェクトの内容(プロパティ値やフィールド値)を確認するといった作業を行うのが一般的だ。
この際、あらかじめクラスの定義にDebuggerDisplay属性(System.Diagnostics名前空間)を付与しておけば、指定した形式で、オブジェクトの内容を簡単に表示させることができる。
次の2つの画面(図1、図2)は、実行の中断中に、デバッグ対象のインスタンス(Personクラスのオブジェクト)上にマウス・カーソルを移動して、インスタンスの情報を表示させたときの画面だ。図2では、PersonクラスにDebuggerDisplay属性を付与しているため、マウスのそばに表示されているポップアップ・ウィンドウの内容が異なっている(以下、すべてVisual Studio 2008の画面)。
|
図1 マウス・ホバーによるデバッグ時のインスタンス情報の表示 |
マウス・カーソルを変数上に移動すれば、ポップアップ・ウィンドウが現れる。通常は先頭にある「+」部分をクリックして展開し、そのインスタンスのプロパティ値やフィールド値を確認できる。 |
|
図2 DebuggerDisplay属性を使用した場合のインスタンス情報の表示 |
あらかじめPersonクラスにDebuggerDisplay属性を付与しておくと、そのインスタンスについて確認したい情報をポップアップ・ウィンドウに表示できる。 |
図2の画面で実行しているサンプル・コードを次に示しておく。上の画面はC#でコンソール・アプリケーションを作成したときのものだが、以下ではVBのコードも示している。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
[System.Diagnostics.DebuggerDisplay("氏名:{Name}、年齢:{Age}")]
public class Person
{
public string Name;
public int Age;
}
class Program
{
static void Main(string[] args)
{
Person myPerson = new Person();
myPerson .Name = "山田太郎";
myPerson .Age = 51;
Console.WriteLine(myPerson);
}
}
}
|
<System.Diagnostics.DebuggerDisplay("氏名:{Name}、年齢:{Age}")> _
Public Class Person
Public Name As String
Public Age As Integer
End Class
Module Module1
Sub Main()
Dim myPerson As New Person()
myPerson.Name = "山田太郎"
myPerson.Age = 51
Console.WriteLine(myPerson)
End Sub
End Module
|
|
DebuggerDisplay属性を使用したサンプル・コード(上:C#、下:VB) |
Personクラスに付与しているDebuggerDisplay属性の記述は次のようなコードである。
[DebuggerDisplay("氏名:{Name}、年齢:{Age}")]
|
<DebuggerDisplay("氏名:{Name}、年齢:{Age}")>
|
|
DebuggerDisplay属性の記述例(上:C#、下:VB) |
DebuggerDisplay属性では、デバッグ情報として表示される文字列を1つ、引数として指定する。文字列には、{Name} や {Age} のように、プロパティやフィールド、メソッドの名前を中カッコで囲んで埋め込むことができ、デバッグ時には、それらはインスタンスでの値に置き換えられる。
また、文字列のプロパティやフィールドについては、次のように中カッコ内の名前の後ろに「,nq」を付けることにより、ダブルクォートを非表示にできる。
[DebuggerDisplay("氏名:{Name,nq}、年齢:{Age}")]
|
<DebuggerDisplay("氏名:{Name,nq}、年齢:{Age}")>
|
|
ダブルクォートを表示しないDebuggerDisplay属性の記述例(上:C#、下:VB) |
「,nq」を指定した場合の表示を次に示す。
|
図3 ダブルクォートを非表示にしたインスタンスの情報表示 |
|
図2では「氏名:"山田太郎"」となっていた表示が、この図3では「氏名:山田太郎」となっているのが分かる。
なおDebuggerDisplay属性は、クラス以外にも、プロパティやフィールド、アセンブリなどにも適用可能だ。詳しくはDebuggerDisplayAttributeクラスの解説を参照していただきたい。
カテゴリ:Visual Studio 2005 処理対象:IDE
カテゴリ:Visual Studio 2008 処理対象:IDE
使用ライブラリ:DebuggerDisplay属性(System.Diagnostics名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間