資料型別是每乙個程式設計人員都要認真研究的知識,這篇文章就來介紹一下菜鳥了解資料型別的「心酸」歷程。
從開始接觸程式語言就有了資料型別,諸如int、string、boolean、time、float、double……,慢慢地有認識了實體型別,還有就是接下來的各種集合類。不管怎麼講他們都是由object型別向下衍生出來的:
背景:
arraylist是乙個使用起來非常方便的集合類,無需進行修改即可用來儲存任何引用或值型別,新增到 arraylist中的任何引用或值型別都將隱式地向上強制轉換為 object。如果項是值型別,則必須在將其新增到列表中時進行裝箱操作,在檢索時進行取消裝箱操作。 強制轉換以及裝箱和取消裝箱操作都會降低效能;在必須對大型集合進行迴圈訪問的情況下,裝箱和取消裝箱的影響非常明顯。
時勢造英雄:
就是由於以上資料型別的侷限性,造就了泛型這個大英雄,他能夠解決其他資料型別無法提供型別引數的問題。
特點:泛型類( genericlist)不可以像這樣使用,因為它實際上並不是乙個型別,而更像是乙個型別的藍圖。若要使用 genericlist,客戶端**必須通過指定尖括號中的型別引數來宣告和例項化構造型別。此特定類的型別引數可以是編譯器識別的任何型別。
demo:
using system;
using system.collections.generic;
using system.linq;
using system.text;
static void main(string args)
}// 宣告乙個泛型類
public class genericlist}}
這裡簡單定義了乙個泛型類,當我們需要例項化不同型別的物件時,只需要將泛型具體確定下來即可。
效果如下:
由結果可以看出:同乙個類,當我們有不同的需要時,改變輸入的引數即可實現我們想要的效果。
這也就是自己對泛型比較淺顯的認識,關於泛型型別引數的約束、泛型類、泛型委託將會在後邊的博文章一一介紹,也希望得到大家的關注和指教。
泛型簡單認識
自定義范型宣告的位置 public t a t t 也可以直接在類上進行宣告。public calss demo6 當使用靜態方法是,類中的宣告有的情況下,依然需要在方法中單獨宣告。publlic static void c t t public class stringfoo public str...
Predicate 泛型委託認識
predicate 泛型委託 注意 此委託在 net framework 2.0 版中是新增的。表示定義一組條件並確定指定物件是否符合這些條件的方法。以下兩個函式用到predicate 泛型委託 list.findindex array.find t func func是 bool func t 的...
泛型的初步認識
在實際的開發中,對於資料一致化的要求是比較重要的 例如 arraylist list new arraylist 構建了乙個容器 int arr new int 10 如果對將要儲存到arraylist中的資料型別沒有進行約束的話,就會導致容器裡放了各種型別的資料。那麼取資料時,就可能需要強制型別轉...