標籤:style blog http io ar color os 使用 sp
1.1群集(collection)的定義
群集是一種結構化的資料類型。儲存資料,並且提供資料的添、刪、改操作,以及對群集不同屬性值的設定與返回操作。
群集分為兩類:線性與非線性群集。
線性群集是一張元素列表,表中元素順次相連。(1、2、3、4)電腦世界中數組為線性群集。
非線性群集所包含的元素在群集內沒有位置次序之分。(2,3,6,1)電腦世界中 樹、堆、圖和集都是非線性群集。
1.2群集(collection)的描述
在兩種主要的群集類中有幾個子類別。線性群集可能是直接存取群集,也可能是順序存取的群集。而線性群集既可以是層次群集,也可以是組群集。
1.2.1直接存取群集(collection)
直接存取叢集最常見的執行個體就是數組。這裡把數組定義為具有相同資料類型的元素群集,而且所有數組元素可通過索引直接進行存取訪問(Item[0]、Item[1]、Item[2])
數組可以是靜態,這樣當聲明數組的時候便於針對程式長度來固定指定元素的數量。數組也可以是動態,通過ReDim或者ReDim Preserve 語句就可以增加數組元素的數量。(注意此方法適用於VB,C#請使用Array.Resize(obj,n))
在c#語言中,數組不只是內建的資料類型,它還是一種類。
我們可以用數組類儲存一個線性群集。向數組添加新元素很容易,只需要簡單的吧新元素放置在數組尾部。但是,在數組中插入一個元素就不那麼高效了。因為要給插入的元素空出位置,所以必須按順序移動數組元素。從數組的尾部刪除一個元素也很效率,但是刪除指定任意位置的元素就沒有那麼效率了。
字串是直接存取群集的另外一種類型。字串是字元的群集。和存取數組元素的方式一樣也可以基於字串的索引對其進行存取。在C#語言中,字串也是作為類對象來實現的。這個類包含一個在字串上執行標準操作的龐大的方法集合,其中操作有串聯接、返回子串、插入字元、移除字元等等。
C#字串是不可變的。意味著一旦初始化就不能再改變。當要修改字串的時候,不是改變原始字串而是建立一個字串的副本。在某些情況下這種行為可能會導致效能急劇下降,所以.NET架構提供了StringBuilder類來讓使用者處理可變字串。
結構(在其他程式設計語言中也被稱為記錄)是最後一種直接存取的群集類型。結構是一種複合資料型別。它所包含的資料可能擁有許多不同的資料類型。由於把這些資料的值分別儲存在分散的變數內是很容易變混淆的,所以程式設計語言採用結構來儲存此類資料。
C#語言的結構所增加的強大能力就是為執行儲存在資料上的操作定義了方法。儘管不能從結構繼承或推匯出一種新的類型,但是這種做法使得結構在某些地方很像一個類。
using System; public struct Name { private string fname, mname, lname; public Name(string first, string middle, string last) { fname = first; mname = middle; lname = last; } public string firstName { get { return fname; } set { fname = firstName; } } public string middleName { get { return mname; } set { mname = middleName; } } public string lastName { get { return lname; } set { lname = lastName; } } public override string ToString() { return (String.Format("{0} {1} {2}", fname, mname,lname)); } public string Initials() { return (String.Format("{0}{1}{2}", fname.Substring(0, 1),mname.Substring(0, 1), lname.Substring(0, 1))); } } public class NameTest { static void Main() { Name myName = new Name("Michael", "Mason", "McMillan"); string fullName, inits; fullName = myName.ToString(); inits = myName.Initials(); Console.WriteLine("My name is {0}.", fullName); Console.WriteLine("My initials are {0}.", inits); } } View Code
第一章 Collections 類、泛型類和Timing類概述