首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 37:善用標準配置機制(上)

     編輯:關於C語言

關於「哪種集合最好?」的答案永遠是「視情況而定」。不同集合在效能與行為上有不同優化。.NET Framework 提供了豐富的集合類型:鏈結清單、陣列、佇列、堆疊等。C# 支援多維陣列,其效能與一維陣列、鋸齒陣列皆有差異。框架還內建許多特殊集合,在自行開發集合類別前,請先詳閱文件。所有集合皆實作 ICollection 介面,文件中列出的實作類別近 20 種。

選擇集合時,必須考慮將對其執行的操作。為了程式的彈性,應使用實作介面的集合類別,以便在發現假設不正確時,能輕易替換為其他集合(參見原則 19)。

.NET Framework 的集合可分為三大類:陣列、類陣列集合、雜湊值集合。陣列是最簡單、通常也是最快的集合,我們從此開始探討。

首選應為 System.Array 類別,確切說是陣列類型。最重要的理由是陣列具備型別安全。所有其他集合皆儲存 System.Object 參考,直到 C# 2.0 引入泛型(參見原則 49)。宣告陣列時,編譯器會為你的型別建立特定的 System.Array 衍生類別。例如:

private int[] _numbers = new int[100];

此陣列儲存整數而非物件參考,避免了值類型在新增、存取、刪除時發生裝箱/拆箱的效能損失(參見原則 17)。初始化會建立一維陣列,包含 100 個整數,記憶體自動清零(值類型為 0,參考類型為 null)。元素可透過索引存取:

int j = _numbers[50];

也可使用 foreach 迭代或列舉器:

foreach (int i in _numbers)
    Console.WriteLine(i.ToString());
// 或:
IEnumerator it = _numbers.GetEnumerator();
while (it.MoveNext())
{
    int i = (int)it.Current;
    Console.WriteLine(i.ToString());
}

若需儲存單一序列的物件,陣列是理想選擇。但實際資料結構往往更複雜,這時可能想到 C 風格的鋸齒陣列(陣列中的陣列)。有時這確實是所需:每個外層元素對應一個內層陣列:

public class MyClass
{
    private int[][] _jagged;
    public MyClass()
    {
        _jagged = new int[5][];
        _jagged[0] = new int[5];
        _jagged[1] = new int[10];
        _jagged[2] = new int[12];
        _jagged[3] = new int[7];
        _jagged[4] = new int[23];
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved