3

bool変数をオーバーライドされたメソッドに渡してtoString()、オブジェクトをさまざまな形式で条件付きで出力できるようにすることは可能ですか?

4

4 に答える 4

4

のオーバーロードメソッドを定義できますToString()

public string ToString(bool status){
  //
}
于 2012-09-20T02:51:58.890 に答える
2

パラメータ化されたToString()の一般的なパターンは、文字列パラメータを使用してオーバーロードを宣言することです。

例:

class Foo
{
    public string ToString(string format)
    {
        //change behavior based on format
    }
}

フレームワークの例については、Guid.ToStringを参照してください。

于 2012-09-20T02:55:34.407 に答える
1

自分のクラスについて話している場合は、次のようにすることができます。

public class MyClass
{
    public bool Flag { get; set; }

    public MyClass()
    {
        Flag = false;
    }

    public override string ToString()
    {
        if (Flag)
        {
            return "Ok";
        }
        else
        {
            return "Bad";
        }
    }
}

そしてそれを使う

MyClass c = new MyClass();
Console.WriteLine(c); //Bad
c.Flag = true;
Console.WriteLine(c); //Ok
Console.ReadLine();

あなたFlagはいくつかのプライベートフィールドであり、いくつかの内部条件に応じてその値を変更することができます。それはすべてあなた次第です。

于 2012-09-20T03:13:30.333 に答える
0

いいえ。オーバーライドするメソッドは、オーバーライドするメソッドと同じシグネチャを持っている必要があります。これは、署名が変更されるため、これ以上パラメータを設定できないことを意味します。私はあなたが望む他のフォーマットのための新しいメソッドを作るでしょう。

于 2012-09-20T02:52:10.503 に答える