程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 為類型輸出格式化字符串

為類型輸出格式化字符串

編輯:C#入門知識

這個建議我讀了兩次才明白啊。 1、實現IFormattable接口實現ToString()輸出格式化字符串 一般我們為類型提供格式化字符串的輸出的做法是重寫ToString(),但是這種方法提供的字符串輸出是非常單一的,所以我們可以實現IFormattable接口的ToString方法,可以讓類型根據用戶的輸入而格式化輸出,因為重寫的ToString方法沒有參數,而實現 IFormattable接口的的ToString方法有參數,還是看代碼最清晰。   復制代碼     public class Person : IFormattable     {         public string FirstName { get; set; }         public string LastName { get; set; }         //重寫的ToString方法輸出字符串比較單一         public override string ToString()         {             return string.Format("{0},{1}", FirstName, LastName);         }         //實現IFormattable接口的ToString方法因為有參數,所以可以實現復雜的邏輯         public string ToString(string format, IFormatProvider formatProvider)         {             if (format == "ch")                 return string.Format("中文名字:{0},{1}", FirstName, LastName);             else                 return string.Format("EnglishName:{0},{1}", FirstName, LastName);         }     } 復制代碼 這樣子調用:   Person p = new Person() { FirstName="wayne", LastName="chan" };  Response.Write(p.ToString());  Response.Write(p.ToString("ch",null));  Response.Write(p.ToString("english", null)); 2、格式化器   上面的方法是在預見類型會存在格式化字符串輸出的需求的時候,提前為類型實現了接口IFormattable,如果類型本身沒有提供格式化字符串輸出的功能,這時“格式化器”就派上用場了。   復制代碼     //針對Person的格式化器     class PersonFormatter : IFormatProvider, ICustomFormatter     {         //IFormatProvider成員         public object GetFormat(Type formatType)         {             if (formatType == typeof(ICustomFormatter))                 return this;             else                 return null;         }         //ICustomFormatter成員         public string Format(string format, object arg, IFormatProvider formatProvider)         {             Person person = arg as Person;             if (person == null)                 return string.Empty;             switch (format)             {                 case "Ch":                     return string.Format("{0}{1}", person.LastName, person.FirstName);                 case "Eg":                     return string.Format("{0}{1}", person.FirstName, person.LastName);                 default:                     return string.Format("{0}{1}", person.FirstName, person.LastName);             }         }     } 復制代碼 一個典型的格式化器應該要實現IFormatProvider, ICustomFormatter 接口,如果使用的話,就先初始化一個格式化器,如下:   Person person = new Person() { FirstName = "wayne", LastName = "chan", IDCode = "aaaa" };  //初始化格式化器  PersonFormatter pFormatter = new PersonFormatter();  Response.Write(pFormatter.Format("Ch", person, null)); 其實看到這裡,我覺得這個建議已經是非常細致的.NET知識了,一般人遇到這種情況,直接就會使用上一種方法了,在看書的時候,我也想直接跳過算了,但最後想,還是把他也記錄下吧,畢竟這也是對自己的提高啊,即使以後還是會把這個知識點遺忘掉,還是可以在本博客找回來啊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved