Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“IFormatable ToString”(“0.0000”)_C#_Tostring_Iformatprovider - Fatal编程技术网

C# C“IFormatable ToString”(“0.0000”)

C# C“IFormatable ToString”(“0.0000”),c#,tostring,iformatprovider,C#,Tostring,Iformatprovider,我有一个类,我想复制与ToString(“0.0000”)相关的功能以及一些其他数字格式的东西。如何做到这一点 正则表达式可能是您的最佳选择。正则表达式可能是您的最佳选择。通过实现IFormattable,并编写一个解析格式字符串并写入输出的方法。。。还有更具体的问题吗?我希望它可以在没有正则表达式的情况下完成。我想知道是否有一些内部类或“0.0000”被转换成的类或其他什么。有一个名为System.Number的类,它对基元类型有各种格式设置方法,但它是内部的,并且所有方法都标有[Method

我有一个类,我想复制与
ToString(“0.0000”)
相关的功能以及一些其他数字格式的东西。如何做到这一点

正则表达式可能是您的最佳选择。

正则表达式可能是您的最佳选择。

通过实现
IFormattable
,并编写一个解析格式字符串并写入输出的方法。。。还有更具体的问题吗?我希望它可以在没有正则表达式的情况下完成。我想知道是否有一些内部类或“0.0000”被转换成的类或其他什么。有一个名为
System.Number
的类,它对基元类型有各种格式设置方法,但它是内部的,并且所有方法都标有
[MethodImpl(methodimpoptions.InternalCall)]
。如果你想知道更多的话,请看一下使用反射器。我不明白你需要实现什么;你能不能解释得更清楚一点,也许用一个例子?你需要提供一个更详细的问题。据我所知,我下面的答案是准确的,但我不清楚你想做什么。因此,我发布的答案与我认为您的问题的答案大致相同,希望在获得更多详细信息后对其进行修改。通过实现
IFormattable
,并编写一个解析格式字符串并写入输出的方法。。。还有更具体的问题吗?我希望它可以在没有正则表达式的情况下完成。我想知道是否有一些内部类或“0.0000”被转换成的类或其他什么。有一个名为
System.Number
的类,它对基元类型有各种格式设置方法,但它是内部的,并且所有方法都标有
[MethodImpl(methodimpoptions.InternalCall)]
。如果你想知道更多的话,请看一下使用反射器。我不明白你需要实现什么;你能不能解释得更清楚一点,也许用一个例子?你需要提供一个更详细的问题。据我所知,我下面的答案是准确的,但我不清楚你想做什么。所以我把这个答案贴出来,作为我对你问题答案的一个近似,希望在获得更多细节后再修改。该死。那是我的恐惧。谢谢你的确认,我想。你有什么特别的原因要避免使用正则表达式吗?这个问题是关于格式化的,不是解析的。正则表达式不合适。@nobugz:听说过
Regex.Replace
方法吗?该死。那是我的恐惧。谢谢你的确认,我想。你有什么特别的原因要避免使用正则表达式吗?这个问题是关于格式化的,不是解析的。正则表达式不合适。@nobugz:听说过
Regex.Replace
方法吗?
class MyNumber : IFormattable
{
   decimal value;
   public MyNumber(decimal value)
   { this.value = value; }

   string IFormattable.ToString(string format, IFormatProvider formatProvider)
   { return value.ToString(format, formatProvider); }

   public string ToString(string format)
   { return ((IFormattable)this).ToString(format, System.Globalization.CultureInfo.CurrentCulture); }
}

class Program
{
   static void Main(string[] args)
   {
      MyNumber num = new MyNumber(3.1415926m);
      Console.WriteLine(num.ToString("0.0000"));
      Console.WriteLine("{0:0.0000}", num);
   }
}