How to pass variables to overridden toString() method?

前端 未结 4 1779
孤独总比滥情好
孤独总比滥情好 2021-01-21 08:43

Is it possible to pass in a bool variable into an overridden toString() method, so it can conditionally print the object in different formats?

相关标签:
4条回答
  • 2021-01-21 09:27

    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.

    0 讨论(0)
  • 2021-01-21 09:32

    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.

    0 讨论(0)
  • 2021-01-21 09:43

    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

    0 讨论(0)
  • 2021-01-21 09:48

    You can define overload method of ToString().

    public string ToString(bool status){
      //
    }
    
    0 讨论(0)
提交回复
热议问题