gpt4 book ai didi

c# - 关于 iCustomFormatter 问题的 String.Format 与 int.ToString

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

我有以下两行代码:

var BadResult = (100).ToString("B", new CustomFormatter ());
var GoodResult = String.Format("{0}", 100, new CustomFormatter ());

而 BadResult 显然是坏的,而 GoodResult 是好的。我的 CustomFormatter 类是这样声明的:(另外,还有一个我认为相关的函数):

public class CustomFormatter 
: IFormatProvider, ICustomFormatter
{
public virtual Object GetFormat(Type formatType)
{
String formatTypeName = formatType.ToString();
formatTypeName = formatTypeName;
Object formatter = null;
if (formatType == typeof(ICustomFormatter))
formatter = this;
return formatter;
}
}

问题本身,当我以“良好结果”运行代码行时,GetFormat 函数正在请求 CustomFormatter 的实例。

每当使用 Float.Tostring() 调用时,它都需要一个 NumberFormatInfo 实例。

我最初跳到“我的 CustomFormatter 应该派生自 NumberFormatInfo”。不幸的是,类(class)是密封的。

那么:我需要做什么才能使用自定义格式化程序调用 Float.ToString()

谢谢!

最佳答案

你的

 var GoodResult = String.Format("{0}", 100, new CustomFormatter ());

没有使用 CustomFormatter。所以你的好结果似乎是由默认值实现的。

你想要的可能是:

 var GoodResult = String.Format(new CustomFormatter (), "{0}", 100);

看看它是如何工作的。

关于c# - 关于 iCustomFormatter 问题的 String.Format 与 int.ToString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873387/

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