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

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

您可以定义ToString() 重载方法。

 public string ToString(bool status){ // } 

参数化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(); 

你的Flag可能是一些私人领域,并根据一些内部条件改变其价值。 全取决于你。

不可以。重写方法必须与其覆盖的方法具有相同的签名。 这意味着它不能再有任何参数,因为这会改变签名。 我想为你想要的其他格式创建一个新方法。