mwhite14
mwhite14

Reputation: 257

How to pass variables to overridden toString() method?

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

Answers (4)

horgh
horgh

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

JakeSays
JakeSays

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

jonvuri
jonvuri

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

KV Prajapati
KV Prajapati

Reputation: 94643

You can define overload method of ToString().

public string ToString(bool status){
  //
}

Upvotes: 4

Related Questions