1
class A
{
    public Color ColorA { get; set; }
    public Color ColorB { get; set; }

    public A(Color colorA, Color colorB)
    {
        ColorA = colorA;
        ColorB = colorB;
    }

    public override string ToString()
    {
        return ColorA + " " + ColorB;
    }
}

これは次のようにレンダリングされます。

ここに画像の説明を入力


この:

class A
{
    public Color ColorA { get; set; }
    public Color ColorB { get; set; }

    public A(Color colorA, Color colorB)
    {
        ColorA = colorA;
        ColorB = colorB;
    }

    public override string ToString()
    {
        return "Red" + " " + "Black";
    }
}

次のようにレンダリングします。

ここに画像の説明を入力

違いはなぜですか?

編集:違いの理由はわかっています。私の質問は、色のテキストをハードコーディングせずに 2 番目の結果を達成する方法です。

4

4 に答える 4

3

ToString最初のメソッドはインスタンスで暗黙的に呼び出しますColorが、2 番目のメソッドは文字列を返すだけです。

あなたの編集へ:よくわかりませんが、自動的に行われると思います。ToKnownColorそれ以外の場合は、メソッドを調べるKnownColorと、必要な動作で色を構築するために使用できる列挙が返されます。ただし、可能なすべての色に名前があるわけではないことに注意してください。

于 2011-03-08T22:17:26.887 に答える
0

それはあなたの ToString() 結果を示しているからです。

最初のものは Color.Red.ToString() を呼び出し、'Color [Red]' を与え、次に Color.Black.ToString() を呼び出します。

于 2011-03-08T22:18:23.410 に答える
0

最初のインスタンスでは、Color クラスの ToString() メソッドが呼び出されます (Color [ColorName] 出力を提供します)。

于 2011-03-08T22:18:37.940 に答える