Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将变量传递给被重写的toString()方法?_C#_Overriding_Tostring - Fatal编程技术网

C# 如何将变量传递给被重写的toString()方法?

C# 如何将变量传递给被重写的toString()方法?,c#,overriding,tostring,C#,Overriding,Tostring,是否可以将bool变量传递到重写的toString()方法中,以便它可以有条件地以不同格式打印对象?您可以定义toString()的重载方法 否。重写方法必须具有与其重写的方法相同的签名。这意味着它不能有更多的参数,因为这会改变签名。我只想为您想要的其他格式创建一个新方法。参数化ToString()的典型模式是使用字符串参数声明重载 例如: class Foo { public string ToString(string format) { //change b

是否可以将
bool
变量传递到重写的
toString()
方法中,以便它可以有条件地以不同格式打印对象?

您可以定义
toString()的重载方法


否。重写方法必须具有与其重写的方法相同的签名。这意味着它不能有更多的参数,因为这会改变签名。我只想为您想要的其他格式创建一个新方法。

参数化ToString()的典型模式是使用字符串参数声明重载

例如:

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

有关框架示例,请参见Guid.ToString

如果您正在谈论自己的类,则可以执行以下操作:

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();

您的
标志可以是某个私有字段,并根据某些内部条件更改其值。一切由你决定

在实际的打印语句中,如何将布尔传递给它。假设我想做Console.WriteLine(对象)。在哪里传递bool?@user1498918:通过显式调用该方法。您可能需要查看。
MyClass c = new MyClass();
Console.WriteLine(c); //Bad
c.Flag = true;
Console.WriteLine(c); //Ok
Console.ReadLine();