【问题标题】:How to pass variables to overridden toString() method?如何将变量传递给重写的 toString() 方法?
【发布时间】:2026-01-04 05:25:02
【问题描述】:

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

【问题讨论】:

标签: c# overriding tostring


【解决方案1】:

你可以定义ToString()overload方法。

public string ToString(bool status){
  //
}

【讨论】:

  • 在实际的打印语句中,您如何将布尔值传递给它。假设我想做 Console.WriteLine(object)。你在哪里传递布尔值?
  • @user1498918:通过显式调用方法。
【解决方案2】:

参数化 ToString() 的典型模式是使用字符串参数声明重载。

例子:

class Foo
{
    public string ToString(string format)
    {
        //change behavior based on format
    }
}

有关框架示例,请参阅 Guid.ToString

【讨论】:

    【解决方案3】:

    如果您在谈论自己的班级,您可以执行以下操作:

    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 可能是某个私有字段并根据某些内部条件更改其值。全取决于你。

    【讨论】:

      【解决方案4】:

      没有。覆盖方法必须具有与其覆盖的方法相同的签名。这意味着它不能有更多的参数,因为这会改变签名。我会为您想要的其他格式制作一个新方法。

      【讨论】:

        最近更新 更多