使用格式化参数覆盖ToString()

时间:2015-08-31 05:32:42

标签: c# function override overloading

考虑一下情景:

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

即,我们可以使用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();
            }
        }

现在正在创建此类的Object:

 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()

1 个答案:

答案 0 :(得分:3)

删除override关键字,然后重新设置。由于System.Object只有string ToString(),因此您在这种情况下不会覆盖任何内容。您正在做的是向现有函数添加一个额外的函数调用(就像框架本身中的所有数值类型一样)。