C#中Ilist與list的區(qū)別小結(jié)
常見問題:
Ilist <> 本身只是一個泛型接口, 既然是接口當(dāng)然不能實例化,只能用如下方法
IList <Class1> IList11 =new List <Class1>();
但是為什么要這么用呢,為什么不直接用List:
List <Class1> List11 =new List <Class1>();
第一種用法有什么好處。
總結(jié)歸納一下:
Ilist <> 是在 .net2.0里面才支持的
好處嘛..比如說human和tiger都有行走的功能,你可以把這些歸類到interface中,當(dāng)你有一個動物的類包括有這兩種動物時,你想讓他們行走你只需要調(diào)一個同樣的方法而不管對方是什么類型,具體的行走嘛,人有兩個只腳,但有4肢,動物有4條腿,這就是到具體的動物類來實現(xiàn)了,但是他們行走時都是4肢擺動,而且都向前邁出一定的距離(當(dāng)然是向前走時),所以我認(rèn)為這些可以歸類為行為抽象,具體的一步能邁出多遠這依賴于每個具體實現(xiàn)的身高/體長.
使用IList <Class1> IList11 =new List <Class1>();
方便后期的修改,當(dāng)你不在使用List 要使用其他類型的時候
只需要修改這一處地方就可以了
不用修改過多的 地方
IList <>是個接口,定義了一些操作方法 這些方法要你自己去實現(xiàn)
List <>是個類型 已經(jīng)實現(xiàn)了IList <>定義的那些方法
List <Class1> List11 =new List <Class1>();
是想創(chuàng)建一個List <Class1>,而且需要使用到List <T>的功能,進行相關(guān)操作。
而
IList <Class1> IList11 =new List <Class1>();
只是想創(chuàng)建一個基于接口IList <Class1>的對象的實例,只是這個接口是由List <T>實現(xiàn)的。所以它只是希望使用到IList <T>接口規(guī)定的功能而已。
接口實現(xiàn)松耦合...有利于系統(tǒng)的維護與重構(gòu)...優(yōu)化系統(tǒng)流程...
鼓勵使用接口
這樣可以實現(xiàn)功能和具體實現(xiàn)的分離
實現(xiàn)接口分離的原則
不是看實際需要用的!
相關(guān)文章
C#?實例解釋面向?qū)ο缶幊讨械膯我还δ茉瓌t(示例代碼)
本文我介紹了?SOLID?原則中的單一功能原則(single-responsibility?principle),并通過?C#?代碼示例簡明地詮釋了它的含意和實現(xiàn),對C#?面向?qū)ο缶幊淘瓌t感興趣的朋友跟隨小編一起看看吧2022-02-02利用MySqlBulkLoader實現(xiàn)批量插入數(shù)據(jù)的示例詳解
MySQLBulkLoader是MySQL?Connector/Net類中的一個類,用于包裝MySQL語句。本文將利用MySqlBulkLoader實現(xiàn)批量插入數(shù)據(jù)功能,感興趣的可以了解一下2022-06-06C#實現(xiàn)將javascript文件編譯成dll文件的方法
這篇文章主要介紹了C#實現(xiàn)將javascript文件編譯成dll文件的方法,涉及C#編譯生成dll動態(tài)鏈接庫文件的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11