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

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

ICustomFormatter及IFormat
文章正文

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"));
    }
  }
}

下面是代码的运行结果。


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!

© 2020 IDC笔记 . | 备案号:辽ICP备18000516号