用格式化参数重写ToString()

本文关键字:ToString 重写 格式化 参数 | 更新日期: 2023-09-27 18:10:39

考虑以下场景:

 int myNumber = 10;
 string formattedNumber = myNumber.ToString("0000"); // output will be "0010"

ie。,我们可以使用ToString()格式化一个整数,就像上面的代码一样。我有一个名为myNewClass的类,其中我覆盖了ToString(),我的目标是使用覆盖的ToString()方法获得格式化的输出。

 public class myNewClass
        {
            public int MyProperty { get; set; }
            public myNewClass(dynamic x)
            {
                MyProperty = x;
            }
            public override string ToString()
            {
                return MyProperty.ToString();
            }
        }

现在我创建了一个这个类的对象:

 myNewClass p = new myNewClass(10);

当我调用ToString()与格式化,然后它不会编译:

  var m = p.ToString("0000");//gives error that "no overloaded method Tostring() takes one argument."

所以我修改了函数签名,如下所示:

  public override string ToString(string format)
        {
            return MyProperty.ToString(format);
        }

结果与:No suitable method found to override

相同

我的问题是,我如何实现重写ToString()与格式化参数

用格式化参数重写ToString()

删除override关键字,然后设置。在这种情况下,您没有重写任何内容,因为System.Object只有string ToString()。你所做的是添加一个额外的函数调用到现有的(就像所有的数值类型在框架本身所做的)。