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