我有可能从int
,float
,decimal
,DateTime
,TimeSpan
等 装箱的object
现在我想将它与格式字符串转换为string
,如"D4"
,"P2"
,或"yyyyMMdd"
。但object
类没有接收格式字符串的ToString
方法。所以下面的代码不起作用。如何将对象转换为格式字符串的字符串?
string Format(object value, string format)
{
return value.ToString(format); // error
}
下面是我丑陋的解决方法。
string Format(object value, string format)
{
if (value is int) return ((int)value).ToString(format);
if (value is float) return ((float)value).ToString(format);
if (value is double) return ((double)value).ToString(format);
if (value is decimal) return ((decimal)value).ToString(format);
if (value is DateTime) return ((DateTime)value).ToString(format);
if (value is TimeSpan) return ((TimeSpan)value).ToString(format);
...
}
有没有更智能的方法?
您的代码并没有真正意义 - 所有这些类型都有不同的适用格式字符串,但是'Format'方法给人的印象是任何格式字符串都可以任意应用于任何对象(显然不是这种情况)。在我看来,你需要首先解开对象,然后决定使用什么格式的字符串...? –
我不明白你为什么不重写ToString()方法。或者你为什么在那里得到一个错误。 –