你好,我想IFormatable处理IFormatProvider
ToStringyIFormatable有两个参数。第一个需要了解如何格式化,第二个也一样,只是更详细和具体的描述。问题是,如果第二个已经包含所有内容,为什么要第一个呢?他们甚至可能相互矛盾。例如,我将第一个参数指定为数字应该有一个句点作为分隔符,第二个参数(我的文化)声明应该有一个逗号。IFormatProvider它有一个方法objectGetFormat(Type formatType)。问题是,为什么它返回一个对象?是的,它可以返回任何东西,为什么它至少没有被概括?例如, ToString 在 double 中尝试IFormatProvider导致CultureInfoorNumberFormatInfo(然后是的,他理解结果可以被带到GetFormat)。是的,他从哪里得到我什至会给他这些类型(CultureInfo或NumberFormatInfo)中的哪一个?
1)正如文档所说,格式字符串通常控制结果的一般外观,而格式提供程序定义用于该一般外观的特定字符。
通常,格式提供者是语言。例如,如果您想要德语的完整日期格式,则在格式行中指定您需要长日期,然后选择格式提供程序
CultureInfo.GetCultureInfo("de-DE")。如果没有分隔,您还必须在格式字符串中传递语言,它会变得晦涩难懂。此外,您经常希望本地化您的应用程序,也就是说,您希望保持相同的格式字符串(格式的含义),并根据用户的喜好。所以这种分成几部分是有实际意义的。
因为它是
.NET Framework 1.1在还没有概括的时候添加的