我想覆盖.ToString()函数,这样每当我得到一个double时,它只输出小数点后的5位数.
如何在覆盖函数内部对.ToString正在处理的对象进行处理?换句话说,我在下面的代码中放了什么shell而不是XXX?
public override string ToString()
{
if (XXX.GetType().Name == "Double")
return (Math.Round(XXX, 5));
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*röm 20
为什么不使用内置格式?
var pi = 3.14159265m;
Console.WriteLine(pi.ToString("N5"));
-> "3.14159"
Run Code Online (Sandbox Code Playgroud)
作为参考,我喜欢John Sheehan 的.NET Format String Quick Reference.
正如乔恩指出的那样,你无法覆盖Double.ToString.您可以为double类型创建扩展方法,以帮助您执行此操作:
public static class DoubleExtensions {
public static string ToStringWith5Digits(this double x) { ... }
}
Run Code Online (Sandbox Code Playgroud)
并使用它像:
double d = 10;
string x = d.ToStringWith5Digits();
Run Code Online (Sandbox Code Playgroud)