Reputation: 257
Is it possible to pass in a bool
variable into an overridden toString()
method, so it can conditionally print the object in different formats?
Upvotes: 3
Views: 3961
Reputation: 18553
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.
Upvotes: 1
Reputation: 349
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
Upvotes: 2
Reputation: 5930
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.
Upvotes: 0
Reputation: 94643
You can define overload method of ToString()
.
public string ToString(bool status){
//
}
Upvotes: 4