首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该实现System.IFormattable.Format(.)抛出一个例外?

应该实现System.IFormattable.Format(.)抛出一个例外?
EN

Stack Overflow用户
提问于 2017-10-17 06:02:00
回答 1查看 91关注 0票数 1

我正在创建一个带有实现System.IFormattable接口的类的API。为了帮助理解实现细节,我在mscorlib中对现有的IFormattable结构进行了一些测试。我对执行以下代码的结果感到惊讶:

代码语言:javascript
复制
string s1 = int.MaxValue.ToString("ABC", CultureInfo.CurrentCulture);
string s2 = DateTime.Now.ToString("ABC", CultureInfo.CurrentCulture);

这两个方法调用都只是返回字符串"ABC",而不是对无法识别的格式字符串抛出异常。

当我尝试:

代码语言:javascript
复制
string s3 = int.MinValue.ToString("ABC", CultureInfo.CurrentCulture);

它返回"-ABC" (?!!)

造成这种意外行为的原因是什么?对于所有的IFormattable类来说,这是一种应该遵循的模式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-17 08:12:39

如果格式字符串无效,则允许从实现中抛出;请参阅IFormattable示例代码中的示例。

3

请注意,在switch语句的末尾,它是如何抛出默认情况的。

或者,试着只用一个角色。(5).ToString("A")抛出。

但是请注意IFormattable的其他要求:

  • 您必须支持格式字符串"G",这意味着某种通用表示。
  • 您必须支持空或空格式字符串,并将其与"G"一样对待。
  • 您必须支持空IFormatProvider,并在这种情况下使用CultureInfo.CurrentCulture
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46805459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档