考虑一下情景:
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()
答案 0 :(得分:3)
删除override
关键字,然后重新设置。由于System.Object
只有string ToString()
,因此您在这种情况下不会覆盖任何内容。您正在做的是向现有函数添加一个额外的函数调用(就像框架本身中的所有数值类型一样)。