C#中使用IFormattable实现自定义格式化字符串输出示例

前端技术 2023/09/06 C#

IFormattable接口提供了ToString()方法的定义,使用该方法可以将对象的值按照指定的格式转化成字符串的功能。

下面是ToString()方法的完整定义。

ICustomFormatter及IFormatProvider接口用法揭秘》,本文不做过多说明。下面是完整的实例代码。

using System;
using System.Globalization;


namespace GreetingExample
{
  public class Greeting : IFormattable
  {
    private string name;
    public Greeting(string name)
    {
      this.name = name;
    }


    public override string ToString()
    {
      return this.ToString(\"CN\",CultureInfo.CurrentCulture);
    }


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


    public string ToString(string format, IFormatProvider provider)
    {
      if (String.IsNullOrEmpty(format)) format = \"CN\";
      if (provider == null) provider = CultureInfo.CurrentCulture;
      switch (format.ToUpper())
      {
        case \"CN\":
        case \"TW\":
          return \"你好,\" + name.ToString();
        case \"US\":
        case \"GB\":
          return \"Hello,\" + name.ToString();
        case \"JP\":
          return \"こんにちは,\" + name.ToString();
        default:
          throw new FormatException(String.Format(\"The {0} format string is not supported.\", format));
      }
    }
  }
}
using System;


namespace GreetingExample
{
  class Program
  {
    static void Main(string[] args)
    {
      Greeting greeting = new Greeting(\"三五月儿\");
      Console.WriteLine(greeting.ToString(\"CN\"));
      Console.WriteLine(greeting.ToString(\"US\"));
      Console.WriteLine(greeting.ToString(\"JP\"));
    }
  }
}

下面是代码的运行结果。

本文地址:https://www.stayed.cn/item/15014

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。