C#中使用IFormattable實(shí)現(xiàn)自定義格式化字符串輸出示例
IFormattable接口提供了ToString()方法的定義,使用該方法可以將對(duì)象的值按照指定的格式轉(zhuǎn)化成字符串的功能。
下面是ToString()方法的完整定義。
string ToString( string format, IFormatProvider formatProvider )
其中:
第一個(gè)參數(shù)告訴方法需要何種格式的輸出,而第二個(gè)IFormatProvider的參數(shù)則允許類型的使用者自定義格式化方法,在本文實(shí)現(xiàn)的ToString()方法中,并沒有使用到第二個(gè)參數(shù)。關(guān)于IFormatProvider接口請(qǐng)閱讀文章《ICustomFormatter及IFormatProvider接口用法揭秘》,本文不做過多說明。下面是完整的實(shí)例代碼。
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"));
}
}
}
下面是代碼的運(yùn)行結(jié)果。

相關(guān)文章
C#實(shí)現(xiàn)HTTP訪問類HttpHelper的示例詳解
在項(xiàng)目開發(fā)過程中,我們經(jīng)常會(huì)訪問第三方接口,如我們需要接入的第三方接口是Web API,這時(shí)候我們就需要使用HttpHelper調(diào)用遠(yuǎn)程接口了。本文為大家介紹了C#實(shí)現(xiàn)HTTP訪問類HttpHelper的示例代碼,需要的可以參考一下2022-09-09
C#實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C# SerialPort實(shí)現(xiàn)串口通訊的代碼詳解
在.NET平臺(tái)下創(chuàng)建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空間是System.IO.Ports,這個(gè)新的框架不但可以訪問計(jì)算機(jī)上的串口,還可以和串口設(shè)備進(jìn)行通信,本文給大家介紹了C# SerialPort實(shí)現(xiàn)串口通訊,需要的朋友可以參考下2024-06-06
C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn)
在我們的圖像類型教程中定義了RGB顏色模型和灰度格式,本文主要介紹了C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn),文中通過代碼介紹的非常清楚,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))
下面小編就為大家?guī)硪黄狢#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名
這篇文章主要介紹了C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名,是從其他網(wǎng)友的java程序改編而來,有需要的小伙伴可以參考下。2015-07-07

