C#中IList 與 List 的區(qū)別小結(jié)
IList 接口和 List 類是 C# 中用于集合操作的兩個(gè)重要的類型。
它們之間的區(qū)別如下:
1. 定義和實(shí)現(xiàn)方式:
IList 接口是一個(gè)抽象接口,定義了一組用于操作列表的方法和屬性。它是 System.Collections 命名空間中的一部分,可以被其他類實(shí)現(xiàn)。
List 類是 IList 接口的一個(gè)具體實(shí)現(xiàn),它提供了 IList 接口中定義的所有方法和屬性的具體實(shí)現(xiàn)。List 類位于 System.Collections.Generic 命名空間中。
2. 泛型支持:
IList 接口是非泛型接口,它可以存儲(chǔ)任意類型的對(duì)象。
List 類是泛型類,它可以指定存儲(chǔ)的元素類型,并在編譯時(shí)進(jìn)行類型檢查,提供更好的類型安全性。
3. 功能和性能:
IList 接口定義了一組基本的列表操作方法,如添加、刪除、插入、索引訪問等。它提供了對(duì)列表的基本操作支持,但不提供具體的實(shí)現(xiàn)。
List 類在 IList 接口的基礎(chǔ)上提供了更多的功能和性能優(yōu)化。它使用動(dòng)態(tài)數(shù)組來(lái)存儲(chǔ)元素,可以高效地進(jìn)行插入、刪除和索引訪問操作。此外,List 類還提供了一些額外的方法,如排序、查找等。
錯(cuò)誤使用案例
using System; using System.Collections.Generic; namespace DemoApplication{ class Demo{ static void Main(string[] args){ IList<string> ilist = new IList<string>(); //This will throw error as we cannot create instance for an IList as it is an interface. ilist.Add("Mark"); ilist.Add("John"); foreach (string list in ilist){ Console.WriteLine(list); } } } }
下面的是正確案例
using System; using System.Collections.Generic; namespace DemoApplication{ class Demo{ static void Main(string[] args){ IList<string> ilist = new List<string>(); ilist.Add("Mark"); ilist.Add("John"); List<string> list = new List<string>(); ilist.Add("Mark"); ilist.Add("John"); foreach (string lst in ilist){ Console.WriteLine(lst); } foreach (string lst in list){ Console.WriteLine(lst); } Console.ReadLine(); } } }
List轉(zhuǎn)IList的方法
/// <summary> /// List轉(zhuǎn)IList公共方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="listObjects"></param> /// <returns></returns> protected static IList<T> ConvertToGenericList<T>(IList listObjects) { IList<T> convertedList = new List<T>(listObjects.Count); foreach (object listObject in listObjects) { convertedList.Add((T)listObject); } return convertedList; }
總結(jié):
- IList 接口是一個(gè)抽象的列表操作接口,可以被其他類實(shí)現(xiàn)。
- List 類是 IList 接口的一個(gè)具體實(shí)現(xiàn),提供了更多的功能和性能優(yōu)化。
到此這篇關(guān)于C#中IList 與 List 的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)C# IList List 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)多線程編程的簡(jiǎn)單案例
這篇文章介紹了C#實(shí)現(xiàn)多線程編程的簡(jiǎn)單案例,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Unity UGUI實(shí)現(xiàn)簡(jiǎn)單拖拽圖片功能
這篇文章主要為大家詳細(xì)介紹了Unity UGUI實(shí)現(xiàn)簡(jiǎn)單拖拽圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06WCF實(shí)現(xiàn)的計(jì)算器功能實(shí)例
這篇文章主要介紹了WCF實(shí)現(xiàn)的計(jì)算器功能,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了WCF實(shí)現(xiàn)計(jì)算器功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06C# Winform程序?qū)崿F(xiàn)防止多開的方法總結(jié)【親測(cè)】
這篇文章主要介紹了C# Winform程序?qū)崿F(xiàn)防止多開的方法,結(jié)合實(shí)例形式總結(jié)分析了C# Winform防止多開相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-03-03c++函數(shù)轉(zhuǎn)c#函數(shù)示例程序分享
這篇文章主要介紹了c++函數(shù)轉(zhuǎn)c#函數(shù)示例程序,大家參考使用吧2013-12-12SQL Server存儲(chǔ)過程在C#中調(diào)用的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于SQL Server存儲(chǔ)過程在C#中調(diào)用的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SQL Server存儲(chǔ)過程具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05