3

次のコードの変数aのデバッガー表示は{11\n22} であると予想していましたが、{1122} です。

class A
{
    public string Text;
    public override string ToString()
    {
        return this.Text;
    }
}

A a = new A();
a.Text = "11\n22";

変数ウィンドウにデバッガーが表示されます。

display string of the object  "{1122}"    // why not "{11\n22}" ?
a.Text                        "11\n22"
a.ToString()                  "11\n22"

VS2012 および VS2010 でテスト済み。私は今までこれに気づきませんでした。表示文字列で\n文字が省略されている理由を知っている人はいますか?

[DebuggerDisplay("Text")] を追加しても同じ結果が得られます。

4

3 に答える 3

4

Try to pin it and you will be see what you need.

于 2013-03-11T21:36:17.333 に答える
2

Visual Studio がObject.ToString()すべての削除を示しているようwhitespacesです。

ただし、テキストをコピーして貼り付けるとNotepad、すべてのwhitespaces.

Visual Studio はdesigned/codedそのようです。

于 2013-03-11T21:27:55.410 に答える
0

は省略さ\nません - 評価されます。\"文字列のどこかに挿入してみると、ヘルパー ウィンドウに二重引用符が表示されることがわかります。同様にa、即時ウィンドウに入ると、次のように表示されます。

a
{"11
22"}
    Text: "11\"\n\\2\"2"

あなたが見ているヘルパーウィンドウはすべてを1行に押しつぶすため、省略されているように見えます.

これは事実上オブジェクトの要約a.ToString()であるため評価されると思います。したがって、表示されているのは、 Visual Studio が (正しく)\n改行として解釈しているという出力値です。

于 2013-03-11T21:58:20.563 に答える