suj*_*lil 0 c# overriding overloading function
考虑以下场景:
int myNumber = 10;
string formattedNumber = myNumber.ToString("0000"); // output will be "0010"
Run Code Online (Sandbox Code Playgroud)
即,我们可以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();
}
}
Run Code Online (Sandbox Code Playgroud)
现在正在创建此类的对象:
myNewClass p = new myNewClass(10);
Run Code Online (Sandbox Code Playgroud)
当我ToString()用格式化调用时,它不会编译:
var m = p.ToString("0000");//gives error that "no overloaded method Tostring() takes one argument."
Run Code Online (Sandbox Code Playgroud)
所以我改变了函数签名如下:
public override string ToString(string format)
{
return MyProperty.ToString(format);
}
Run Code Online (Sandbox Code Playgroud)
再次结果与: No suitable method found to override
我的问题是如何使用格式化参数实现覆盖 ToString()
删除override关键字,你就设置好了。在这种情况下,您不会覆盖任何内容,因为System.Object只有string ToString(). 您正在做的是向现有函数添加一个额外的函数调用(就像框架本身中的所有数值类型一样)。
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |