gpt4 book ai didi

c# - FormatProvider vs. 扩展方法 vs. 新类

转载 作者:太空狗 更新时间:2023-10-29 23:42:41 26 4
gpt4 key购买 nike

我想将一个整数输出为罗马数字并遇到 this杰西切片机的回答。这是一种扩展方法,但我想知道如何利用 ToString(string, IFormatProvider) 来做类似的事情

int a = 10;
string b = a.ToString("RN", provider);
// OR
string c = string.Format(provider, "{0:RN} blah foo", a);

代替

int a = 10;
string b = a.ParseRomanNumeral();
// OR
string c = string.Format("{0} blah foo", a.ParseRomanNumeral());

我从未写过格式提供程序,所以我不确定所涉及的工作,但这是我的问题。 对于一些定义明确的格式转换,例如罗马数字,您会使用:

  • 格式提供者
  • 使用扩展方法
  • 编写一个实现 ParseTryParseToString 的 RomanNumeral 类
  • 别的

为什么?

使用 string.Format() 及其同类方法(例如,StringBuilder.AppendFormat())是否会影响您的答案?显然,对于扩展方法,您无法使用其中一种格式化方法访问转换。

我认为实现整个范围的自定义类是最谨慎但也是最耗时的。使用自定义格式提供程序似乎会触及一些现有的全局化内容(如果有的话)。

最佳答案

格式提供程序适用于您自己的类型,但在使用内置类型时它们很笨拙,因为您必须创建提供程序的实例并将其传递给 Format 方法,这消除了格式说明符的优势。直接在 int 上使用扩展方法要方便得多。

关于c# - FormatProvider vs. 扩展方法 vs. 新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1111255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com