程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c#擴展方法奇思妙用高級篇四:對擴展進行分組管理(2)

c#擴展方法奇思妙用高級篇四:對擴展進行分組管理(2)

編輯:關於C語言

代碼僅是為了說明怎麼分組,沒有實現,具體實現請參見本系列前面的文章。為了節省空間,很多代碼都寫成了一行。

前面提到的第二條缺點,我們改進後,方式二的顯示效果如下:

Equals、GetHashCode、ToString 實在去不了,哪位朋友有好辦法分享一下吧!不過這次把擴展方法的標志加上。實現比方式一麻煩一下:

1 public class ChineseString
2 {
3  private string s;
4  public ChineseString(string s) { this.s = s; }
5  public string GetValue() { return s; }
6 }
7 
8 public static class CheseStringExtension
9 {
10 public static ChineseString AsChineseString(this string s) { return new ChineseString(s); }
11 
12 public static string ToSBC(this ChineseString cs) 
13 {
14  string s = cs.GetValue();//從ChineseString取出原string
15  char[] c = s.ToCharArray();
16  for (int i = 0; i < c.Length; i++)
17  {
18   if (c[i] == 32) { c[i] = (char)12288; continue; }
19   if (c[i] < 127) c[i] = (char)(c[i] + 65248);
20  }
21  return new string(c);
22 }
23 public static string ToDBC(this ChineseString cs) { throw new NotImplementedException(); }
24 public static string GetChineseSpell(this ChineseString cs) { throw new NotImplementedException(); }
25 }

這裡需要兩個類,一個類ChineseString作為AsXXX的返回值,第二個類ChineseStringExtension是對ChineseString進行擴展的類。能過這種方式,才能顯示出擴展的標識符號!每組擴展要兩個類,比較麻煩。

方式一、方式二感覺都不太好,而且擴展組多了,還會有新的問題出現,如下:

也是很要命的!再來看第三種方式,這是我和韋恩卑鄙在討論單一職責原則時想出來的,先看效果:

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