程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 淺談c#泛型類型變量作為操作數使用的通用解決方法

淺談c#泛型類型變量作為操作數使用的通用解決方法

編輯:C#入門知識

問題來源:在c#編程中,經常會對一些數字型基元類型如Int16,Int32,Int64,Decimal等,做一些加減乘除等等運算的事情。比如我們經常寫出下面的方法,用來計算從0開始到輸入的32位整數之間數字的總和(沒有考慮溢出等特殊情況):

  1 internal static Int32 Sum(int num) 2 { 3     Int32 sum = 0; 4     for (Int32 i = 0; i < num; i++) 5     { 6         sum += i; 7     } 8     return sum; 9 }

同理,如果我們需要返回類型和輸入類型為其他基元類型,如Decimal,Int64等等,正常情況下我們都會修改上述代碼中返回和輸入參數類型,比如可以這樣對Int64進行求和:

  1 internal static Int64 Sum(Int64 num) 2 { 3     Int64 sum = 0; 4     for (Int64 i = 0; i < num; i++) 5     { 6         sum += i; 7     } 8     return sum; 9 }

但是這樣有多少種不同的基元數字類型是不是就要寫多少個這樣的方法(這裡不考慮某些數字型基元類型之間的相互轉換),造成方法膨脹,代碼臃腫?大家分析上面的代碼,發現參數個數,運算格式非常類似,毫無疑問會想到抽象出一個公共的泛型方法來解決數字型基元類型的運算問題。

在<<CLR Via C#>>一書中,Jeffrey Richter就舉例並“千方百計”的想實現下面的泛型方法來實現泛型類型變量作為操作數的通用解決方案:

  01 internal static class UsingGenericTypeVariablesAsOperands 02 { 03     private static T Sum<T>(T num) where T : struct 04     { 05         T sum = default(T); 06         for (T n = default(T); n < num; n++) 07             sum += n; 08       

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