C#中Ilist與list的區(qū)別小結(jié)
常見(jiàn)問(wèn)題:
Ilist <> 本身只是一個(gè)泛型接口, 既然是接口當(dāng)然不能實(shí)例化,只能用如下方法
IList <Class1> IList11 =new List <Class1>();
但是為什么要這么用呢,為什么不直接用List:
List <Class1> List11 =new List <Class1>();
第一種用法有什么好處。
總結(jié)歸納一下:
Ilist <> 是在 .net2.0里面才支持的
好處嘛..比如說(shuō)human和tiger都有行走的功能,你可以把這些歸類到interface中,當(dāng)你有一個(gè)動(dòng)物的類包括有這兩種動(dòng)物時(shí),你想讓他們行走你只需要調(diào)一個(gè)同樣的方法而不管對(duì)方是什么類型,具體的行走嘛,人有兩個(gè)只腳,但有4肢,動(dòng)物有4條腿,這就是到具體的動(dòng)物類來(lái)實(shí)現(xiàn)了,但是他們行走時(shí)都是4肢擺動(dòng),而且都向前邁出一定的距離(當(dāng)然是向前走時(shí)),所以我認(rèn)為這些可以歸類為行為抽象,具體的一步能邁出多遠(yuǎn)這依賴于每個(gè)具體實(shí)現(xiàn)的身高/體長(zhǎng).
使用IList <Class1> IList11 =new List <Class1>();
方便后期的修改,當(dāng)你不在使用List 要使用其他類型的時(shí)候
只需要修改這一處地方就可以了
不用修改過(guò)多的 地方
IList <>是個(gè)接口,定義了一些操作方法 這些方法要你自己去實(shí)現(xiàn)
List <>是個(gè)類型 已經(jīng)實(shí)現(xiàn)了IList <>定義的那些方法
List <Class1> List11 =new List <Class1>();
是想創(chuàng)建一個(gè)List <Class1>,而且需要使用到List <T>的功能,進(jìn)行相關(guān)操作。
而
IList <Class1> IList11 =new List <Class1>();
只是想創(chuàng)建一個(gè)基于接口IList <Class1>的對(duì)象的實(shí)例,只是這個(gè)接口是由List <T>實(shí)現(xiàn)的。所以它只是希望使用到IList <T>接口規(guī)定的功能而已。
接口實(shí)現(xiàn)松耦合...有利于系統(tǒng)的維護(hù)與重構(gòu)...優(yōu)化系統(tǒng)流程...
鼓勵(lì)使用接口
這樣可以實(shí)現(xiàn)功能和具體實(shí)現(xiàn)的分離
實(shí)現(xiàn)接口分離的原則
不是看實(shí)際需要用的!
相關(guān)文章
BarCode條形碼基于C# GDI+ 的實(shí)現(xiàn)方法詳解
本篇文章介紹了,BarCode條形碼基于C# GDI+ 的實(shí)現(xiàn)方法詳解。需要的朋友參考下2013-05-05
C#使用分部類設(shè)計(jì)實(shí)現(xiàn)一個(gè)計(jì)算器
分部類是C#4.5中的一個(gè)新特性,它的出現(xiàn)使得程序的結(jié)構(gòu)更加合理,代碼組織更加緊密,本文將使用分部類設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器,感興趣的小伙伴可以了解下2024-02-02
C#中的ICustomFormatter及IFormatProvider接口用法揭秘
這篇文章主要介紹了C#中的ICustomFormatter及IFormatProvider接口用法揭秘,本文能過(guò)分析一段代碼得出一些研究結(jié)果,需要的朋友可以參考下2015-06-06
DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法,需要的朋友可以參考下2014-08-08

