自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談C#中的集合對(duì)象(Collections)

開發(fā) 后端
本文將介紹微軟C#編程中的集合對(duì)象(Collections),在.NET Framework里,集合有很多,如List<T>和ArrayList是與數(shù)組相當(dāng)?shù)募项?。還有其他類型的集合:隊(duì)列、棧、鏈表和字典。本文將介紹的是其中的一些常用部分。

記得教科書上有這樣一句話:"如果需要使用同一類型的多個(gè)對(duì)象,就可以使用集合和數(shù)組。" ,是的,沒有錯(cuò).只是數(shù)組的大小是固定的。如果元素個(gè)數(shù)是動(dòng)態(tài)的,就應(yīng)使用集合類。在.NET Framework里,集合有很多,如List和ArrayList是與數(shù)組相當(dāng)?shù)募项?。還有其他類型的集合:隊(duì)列、棧、鏈表和字典。本文不會(huì)對(duì)這些集合對(duì)象作詳細(xì)的介紹,只是把常用的集合對(duì)象拿出來討論一下。

1.數(shù)組

在實(shí)際應(yīng)用中,數(shù)組又可分為:簡(jiǎn)單數(shù)組、多維數(shù)組、鋸齒數(shù)組、Array數(shù)組.使用最多的應(yīng)該算的簡(jiǎn)單數(shù)組和多維數(shù)組,這里我以簡(jiǎn)單數(shù)組為例簡(jiǎn)單介紹下數(shù)組的簡(jiǎn)單使用,關(guān)于的其他知識(shí)點(diǎn)請(qǐng)大家參考相關(guān)資料和書籍.

比如說我們要定義一個(gè)整型的簡(jiǎn)單數(shù)組,那應(yīng)該怎么定義呢?

classProgram
{
  staticvoidMain(string[]args)
  {
    int[]users=newint[5];
    users[0]=10;
    users[1]=20;
    //
  }
}

是上面這樣定義和使用的嗎?我想稍微學(xué)過編程的朋友都可以給出肯定的答案.關(guān)于這點(diǎn)我不想作過多的解釋.見下圖:

這里我們是使用的基本類型(int)類型來定義的數(shù)組,在使用開發(fā)中我們還會(huì)使用到自定義類型數(shù)組,下面我就簡(jiǎn)單的說說這方面的知識(shí).要定義自定義類型數(shù)組,那么首先就應(yīng)該有個(gè)自定義類型,當(dāng)然這個(gè)類型可以封其他的相關(guān)屬性.OK,如下代碼段:

///
///自定義類型User,內(nèi)部封裝了一個(gè)屬性name.
///

publicclassUser
{
  privatestringname;
  publicstringName
  {
    get{returnname;}
    set{name=value;}
  }
}

如上就是一個(gè)自定義的類型,我們?cè)谄鋬?nèi)部封裝了一個(gè)name屬性.那么,類型已經(jīng)定義好,那我們應(yīng)該如何去使用這個(gè)自定義類型去定義一個(gè)數(shù)組呢?是這樣的嗎?

classProgram
{
  staticvoidMain(string[]args)
  {
    User[]user=newUser[2]; //定義User類型的數(shù)組
    Useru=newUser();
    u.Name="Beniao";
    user[0]=u;
    Console.WriteLine(user[0].Name);
  }
}

如上我們就完成了一個(gè)自定義類型的對(duì)象數(shù)組的定義,以及數(shù)組的相關(guān)操作.見下圖:

由于多維數(shù)組、鋸齒數(shù)組、Array數(shù)組等數(shù)組在實(shí)際的開發(fā)中使用不是很多,這里就不作介紹.

2.集合對(duì)象

集合類可以組合為集合,存儲(chǔ)Object類型的元素和泛型集合類。在.NET 2.0之前,不存在泛型?,F(xiàn)在泛型集合類通常是集合的首選類型。泛型集合類是類型安全的,如果使用值類型,是不需要裝箱操作的。如果要在集合中添加不同類型的對(duì)象,且這些對(duì)象不是相互派生的,例如在集合中添加int和string對(duì)象,就只需基于對(duì)象的集合類。

象類型的集合位于System.Collections命名空間;泛型集合類位于System.Collections. Generic命名空間;當(dāng)然,組合集合類還有其他方式。集合可以根據(jù)集合類執(zhí)行的接口組合為列表、集合和字典。接口及其功能如表10-1所示。.NET 2.0為集合類添加了新的泛型接口,例如IEnumerable和IList。這些接口的非泛型版本將一個(gè)對(duì)象定義為方法的參數(shù),而其泛型版本使用泛型類型T。

(1)列表

.NET Framework為動(dòng)態(tài)列表提供了類ArrayList和List。System.Collections.Generic命名空間中的類List的用法非常類似于System.Collections命名空間中的ArrayList類。這個(gè)類實(shí)現(xiàn)了IList、ICollection和IEnumerable接口。如下代碼段:

classProgram
{
  staticvoidMain(string[]args)
  {
    //創(chuàng)建列表
    ArrayListlist=newArrayList();
    //添加元素
    list.Add("張三");
    //插入元素
    list.Insert(1,"李四");
    //訪問元素
    stringname=list[0].ToString();
    //刪除元素
    list.RemoveAt(1);//刪除索引號(hào)為1的元素|Remove(Objectobj);
    //檢索元素
    intindex=list.IndexOf("張三"); //得到對(duì)象所在的下標(biāo)
    //排序元素
    list.Sort(); //有多種重載

    Listl=newList(); //創(chuàng)建列表
    l.Add(1);            //添加元素
    l.Add(7);
    l.Add(3);
    l.Add(9);
    l.Add(6);
    l.Add(10);
    l.Sort();
    foreach(int iinl)
    {
      Console.Write(i+"");
    }

    l.Remove(10); //刪除值為10的元素
  }
}

關(guān)于列表的算法可以參考我以前寫過的一篇文章,文章連接:列表算法

(2)隊(duì)列

隊(duì)列是其元素以先進(jìn)先出(FIFO)的方式來處理的集合。先放在隊(duì)列中的元素會(huì)先讀取??山Y(jié)合下圖來理解:

在.NET的System.Collections命名空間中有非泛型類Queue,在System.Collections. Generic命名空間中有泛型類Queue。這兩個(gè)類的功能非常類似,但泛型類是強(qiáng)類型化的,定義了類型T,而非泛型類基于Object類型。

在創(chuàng)建隊(duì)列時(shí),可以使用與List類型類似的構(gòu)造函數(shù)。默認(rèn)的構(gòu)造函數(shù)會(huì)創(chuàng)建一個(gè)空隊(duì)列,也可以使用構(gòu)造函數(shù)指定容量。在把元素添加到隊(duì)列中時(shí),容量會(huì)遞增,包含4、8、16和32個(gè)元素。與List類型類似,隊(duì)列的容量也總是根據(jù)需要成倍增加。非泛型類Queue的默認(rèn)構(gòu)造函數(shù)與此不同,它會(huì)創(chuàng)建一個(gè)包含32項(xiàng)的空數(shù)組。

不過一般項(xiàng)目中用得不是很多,這里故不做示例代碼.

【編輯推薦】

  1. C#3.0中自動(dòng)屬性和對(duì)象初始化器
  2. 簡(jiǎn)述用C#實(shí)現(xiàn)優(yōu)先隊(duì)列方法
  3. C#中的Adapter設(shè)計(jì)模式淺析
責(zé)任編輯:彭凡 來源: ITPUB
相關(guān)推薦

2009-08-18 09:06:41

C#對(duì)象和集合

2025-03-19 07:48:07

C# 13params參數(shù)

2009-08-26 15:28:52

C#對(duì)象集合初始化器

2009-08-12 11:24:25

C# String對(duì)象

2009-08-19 17:12:18

C# Connecti

2009-08-31 09:37:09

C# Employee

2009-08-03 15:06:43

C# Stack對(duì)象C# Queue對(duì)象

2009-09-02 15:41:21

C# HTTPWebR

2009-09-02 16:36:37

C#調(diào)用Excel對(duì)象

2012-03-14 10:48:05

C#

2009-07-31 17:51:27

C#對(duì)象初始化

2009-07-31 13:48:34

C# eval()函數(shù)

2009-02-05 15:32:23

接口委托

2009-08-20 18:30:33

C# ReaderWr

2011-09-21 10:56:31

C#結(jié)構(gòu)

2009-09-17 17:13:54

C#數(shù)組

2009-08-14 10:51:43

2009-06-24 10:49:16

JavaScript

2009-08-03 11:32:49

C#調(diào)用COM對(duì)象

2009-09-02 10:58:02

C#動(dòng)態(tài)數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)