Is it possible to pass in a bool
variable into an overridden toString()
method, so it can conditionally print the object in different formats?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You can define overload method of ToString()
.
public string ToString(bool status){
//
}
回答2:
The typical pattern for parametrized ToString() is to declare an overload with a string parameter.
Example:
class Foo
{
public string ToString(string format)
{
//change behavior based on format
}
}
For a framework example see Guid.ToString
回答3:
If you are talking about your own class, you could do the following:
public class MyClass
{
public bool Flag { get; set; }
public MyClass()
{
Flag = false;
}
public override string ToString()
{
if (Flag)
{
return "Ok";
}
else
{
return "Bad";
}
}
}
And use it
MyClass c = new MyClass();
Console.WriteLine(c); //Bad
c.Flag = true;
Console.WriteLine(c); //Ok
Console.ReadLine();
Your Flag
could be some private field and change its value, depending on some inner conditions. It's all up to you.
回答4:
No. An overriding method must have the same signature as the method it's overriding. This means that it can't have any more parameters, since that would change the signature. I would just make a new method for the other format you want.