C#基本資料結構——枚舉、結構體、數組和集合

來源:互聯網
上載者:User

一、實值型別
    C#
支援兩種實值型別:枚舉和結構
   1.1 枚舉(enum)
    1)和所有實值型別一樣,枚舉可以使用。修飾符來建立一個可空的枚舉變數,如:Season。 colorful=null;
    2)可以指定枚舉的類型,如:
         enum Season{spring=1,summer,fall,winter}可以,也可以像下面這樣聲明:
         enum Season:short{spring,summer,fall,winter}
    一種枚舉看可以基於8種整數類型的任何一種:byte,sbyte,short,ushort,int,uint,long或者ulong
    1.2 結構(Struct)——結構體和類的區別
     
1)結構體是實值型別,而類是參考型別
     2)結構體的執行個體稱為值,儲存在棧上,而類的執行個體稱為對象,儲存在堆上
     3)結構體不能為結構聲明預設建構函式,而類可以;但是,如果沒有寫建構函式,結構體和類一樣會有一個預設的建構函式,只是結構體不能顯示地為自己寫預設建構函式
     4)結構體即使自己聲明了建構函式,編譯器還是會為其產生預設建構函式,而類則不會;
     5)在類中,聲明變數(執行個體欄位)的同時,就可以初始化它,而結構體不可以,它必須在函數裡面初始化
     6)結構體的構造器如果不初始化欄位,編譯器是不會協助其初始化的,而類則可以
二、數組和集合
    2.1 陣列變數
    
1)初始化數組          int [] pins=new int[4] {9,3,7,2};
     初始化數組時,實際上可以省略new運算式和數組的大小,如:
                                     int [] pins={9,3,2,7};
     2)建立隱式類型的數組
     如果在聲明數組的時候指定了一個初始值列表,就可以讓C#編譯器自己推斷數組中的元素的類型,如下所示:
                                    var names=new[]{"John","Dim","Rose"};
      首先,我們省略了類型後的方括弧,本例中的names變數被聲明為var,而不是var[];其次,必須在初始值列表之前添加new[]。注意:使用這個文法,必須保證所有初始值都有相同的類型。
      3)複製數組
      i) 
           int[] pins={9,7,3,2};
           int[] alias=pins;//pins 和alias引用同一個數組執行個體
      這裡,pins改變了,alias也會跟著改變,所以,不是真正物理上的拷貝,只是引用相同
      ii)如果想要真正複製一個數組執行個體,獲得堆上實際資料的副本,那麼必須做兩件事:其一、必須建立類型和大小與原始數組相同的一個新的數組執行個體;其二,將資料元素逐個複製到新數組
      iii)用CopyTo方法,將一個數組複製到另一個數組,並從指定的位置開始
      iv)用Copy,從0下標開始複製,並要指定複製長度
     2.2 集合
    集合有很多種類型,熟悉的有ArrayList、Stack、Queue;目前還較為生疏的有:Hashtable、SortedList。
    Hashtable和SortedList是關聯陣列,在用的時候,要將索引值和映射的目標值一起成對存入。以Hashtable為例:
    1)Hashtable不能有重複的key值,如果調用add來添加一個已有的key,就會拋出異常,如果使用方括弧標記法來添加一個key/Value對(下例就是這樣),就不會拋異常;
    2)使用foreach語句遍曆一個Hashtable時,會返回一個DictionaryEntry。DictionaryEntry類允許通過Key屬性和Value屬性來訪問兩個object數組中的key和value元素;
           Hashtable ages=new Hashtable();
           ages["John"]=44;
           ages["Dim"]=20;
           ages["Tim"]=50;
    SortedList和Hashtable一樣,只是keys數組總是排好序的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.