用格式化参数覆盖 ToString()
overriding ToString() with formating arguments
考虑场景:
int myNumber = 10;
string formattedNumber = myNumber.ToString("0000"); // output will be "0010"
即,我们可以像上面的代码一样使用 ToString()
格式化一个整数。我有一个名为 myNewClass
的 class,其中覆盖了 ToString()
,我的目标是使用覆盖的 ToString() 方法获得格式化输出。
public class myNewClass
{
public int MyProperty { get; set; }
public myNewClass(dynamic x)
{
MyProperty = x;
}
public override string ToString()
{
return MyProperty.ToString();
}
}
现在正在创建此 class 的对象,如下所示:
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()
删除 override
关键字即可。在这种情况下,您没有覆盖任何内容,因为 System.Object
只有 string ToString()
。您正在做的是向现有函数调用添加一个额外的函数调用(就像框架本身中的所有数值类型一样)。
考虑场景:
int myNumber = 10;
string formattedNumber = myNumber.ToString("0000"); // output will be "0010"
即,我们可以像上面的代码一样使用 ToString()
格式化一个整数。我有一个名为 myNewClass
的 class,其中覆盖了 ToString()
,我的目标是使用覆盖的 ToString() 方法获得格式化输出。
public class myNewClass
{
public int MyProperty { get; set; }
public myNewClass(dynamic x)
{
MyProperty = x;
}
public override string ToString()
{
return MyProperty.ToString();
}
}
现在正在创建此 class 的对象,如下所示:
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()
删除 override
关键字即可。在这种情况下,您没有覆盖任何内容,因为 System.Object
只有 string ToString()
。您正在做的是向现有函数调用添加一个额外的函数调用(就像框架本身中的所有数值类型一样)。