18

デバッグモードで自分の制御下にあるクラスに対してToString()を表示させたいのですが。

マウスで変数にカーソルを合わせると、これが最初に表示されると便利です。これには属性がありますか?

4

7 に答える 7

30

クラスにマークを付ける

[System.Diagnostics.DebuggerDisplay("{ToString()}")]

テスト:

[System.Diagnostics.DebuggerDisplay("{ToString()}")]
class MyClass
{
    private string _foo = "This is the text that will be displayed at debugging"

    public override string ToString()
    {
        return _foo;
    }
}

これで、マウスで変数にカーソルを合わせると、が表示されThis is the text that will be displayed at debuggingます。

于 2011-07-26T11:04:48.900 に答える
9

DebuggerDisplayAttributeディスプレイに影響を与えることができるものがあります。かなり複雑な式を記述してデバッグ出力を生成できますが、そうすることはお勧めしません

ただし、オーバーライドToStringした場合、デバッガーはデフォルトでそれを表示するように文書化されています。たぶん、コードに何か問題がありますか?

于 2011-07-26T11:05:19.247 に答える
7

の出力はToString、デバッグ時に表示されるデフォルトである必要があります。

DebuggerDisplay属性を使用してオーバーライドできます( MSDNを参照)。

ToStringログファイルへの書き込みにも役立つため、メソッドをオーバーライドする方が簡単で用途が広いので、このメソッドをオーバーライドすることをお勧めします。

どのような出力が表示されますか?タイプ名を取得すると、デフォルトが表示されますToString

于 2011-07-26T11:05:07.383 に答える
5

同様の問題がありました。私のクラスにはToString()オーバーライドがありましたが、それでもVSに表示されませんでした。これは奇妙なことでした。

属性[System.Diagnostics.DebuggerDisplay( "{ToString()}")]をクラスに追加すると、ToStringが表示されるはずのVisualStudioデバッガーで例外が表示されました。実装でstring.Format()を誤って使用するというバグがあったことが判明しました。これは興味深い動作です。例外が発生した場合、VSはデフォルトのToStringに戻ります。上記の属性を使用すると、ディスプレイにメソッドの出力(有効または例外)が表示されます。これは、ToString()のデバッグに非常に役立ちます。それ以外の場合、何らかの理由でこの動作をオフにしたい場合を除いて、クラスではデフォルトでこの属性がオンになっているため、この属性を各クラスに明示的に追加しても意味がありません。

于 2017-07-19T16:28:08.653 に答える
4

あなたが探しているのはDebuggerDisplayAttribute

http://www.codeproject.com/Articles/117477/Using-DebuggerDisplayAttribute

上記のリンクを使用して、それがどのように行われるかを確認してから、ToString()メソッドを使用して表示されているものを駆動し、これをクラスに適用します。私はこれまでプロパティのみを使用しましたが、クラスを挿入できるかどうかはわかりません。

于 2011-07-26T11:04:45.253 に答える
2

オブジェクト内で次のように.ToStringをオーバーライドします。

public class MyObject
{
        public int Property1{ get; set; }
        public string Property2{ get; set; }
        public string Property3 { get; set; }

        public override string ToString()
        {
            return Property3;
        }
}

これにより、Property3がToString()値として返されます

于 2011-07-26T11:05:27.867 に答える
0

Visual Studioを使用している場合は、yourvariable.ToString()行にwatch @ runtimeを追加できます。これは、ブレークポイントに到達したときに画面の下部に表示されます。

于 2011-07-26T11:05:46.513 に答える