IFormattable接口提供了ToString()方法的定義,使用該方法可以將對象的值按照指定的格式轉化成字符串的功能。
下面是ToString()方法的完整定義。
其中:
第一個參數告訴方法需要何種格式的輸出,而第二個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")); } }}
下面是代碼的運行結果。
新聞熱點
疑難解答