首页 > 编程 > C# > 正文

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

2020-01-24 01:42:50
字体:
来源:转载
供稿:网友

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

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

复制代码 代码如下:

string ToString( string format, IFormatProvider formatProvider ) 

其中:

第一个参数告诉方法需要何种格式的输出,而第二个IFormatProvider的参数则允许类型的使用者自定义格式化方法,在本文实现的ToString()方法中,并没有使用到第二个参数。关于IFormatProvider接口请阅读文章《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"));    }  }}

下面是代码的运行结果。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表