程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Effective C#原則37:使用標准的配置機制(1)

Effective C#原則37:使用標准的配置機制(1)

編輯:關於C語言

“哪種集合是最好的?”答案是:“視情況而定。” 不同的集合有不同的性能,而且在不同的行為上有不同的優化。.Net框架支持很 多類似的集合:鏈表,數組,隊列,棧,以及其它的一些集合。C#支持多維的數 組,它的性能與一維的數組和鋸齒數組都有所不同。.Net框架同樣包含了很多特 殊的集合,在你創建你自己的集合類之前,請仔細參閱這些集合。你可以發現很 多集合很快,因為所有的集合都實現了ICollection接口。在說明文檔中列出了 所有實現了ICollection接口的集合,你將近有20多個集合類可用。

為了 選擇適合你使用的集合,你須要考慮在該集合上使用的操作。為了創建一個有伸 縮性的程序,你須要使用一些實現了接口的集合類,這樣當你發現某個假設的集 合不正確時,你可以用其它不同的集合來代替它(參見原則19)。

.Net框 架有三種不同類型的集合:數組,類似數組的集合,以及基於散列值的集合。數 組是最簡單的也是一般情況下最快的集合,因此我們就從它開始。這也是你經常 要使用到的集合類。

你的第一選擇應該經常是System.Array類,確切的 說,應該是一個數組類型的類。 選擇數組類的首要原因,也是最重要的原因是 數組是類型安全的。所有其它集合都是存儲的System.Object引用,直到C#2.0才 引入了范型(參見原則49)。當你申明一個數組時,編譯器為你的類型創建一個特 殊的System.Array派生類。例如:這樣創建了申明並創建了一個整型的數組:

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

這個 數組存儲的是整型,而不是System.object的引用。這很重要,因為你在一個數 組上添加,訪問,刪除值類型時,可以避免裝箱與拆箱操作的性能損失(參見原 則17)。上面的初始化操作創建了一個一維的數組,裡面存放了100個整數。所有 被數組占用的內存都被清0了。值類型數組都是0,而引用數組都是null。所有在 數組裡的元素可以用索引訪問:

int j = _numbers[ 50 ];

另外,訪問數組時還可以用foreach迭代,或者使用枚舉器:

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

如果准備存儲單一次序的對象,你應該使用數組。但 實際上你的數據結構往往比這復雜的多。這很快誘使我們回到了C風格上的鋸齒 數組,那就是一個數組裡存儲另一個數組。有些時候這確實是你想要的,每個外 層元素都是內層的一個數組:

public class MyClass
{
 // Declare a jagged array:
 private int[] [] _jagged;
 public MyClass()
 {
  // Create the outer array:
  _jagged = new int[5][];
  // Create each inner array:
  _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