当前位置: 首页 > 資訊 >

C# 一些特性

陣列(array)

陣列是一種資料結構, 可以儲存相同類型的多個變數, 陣列中包含的變數稱為陣列的元素, 可以指定陣列元素的類型來宣告陣列, 可透過索引存取變數, 陣列包含變數的個數稱為長度(Length), 索引範圍在 0 到 Length-1 之間
陣列型別是參考型別, 宣告陣列變數只是預留空間給陣列實體的參考, 實際上陣列實體是在 runtime 時使用 new 運算符創造出來, new 運算符指定陣列實體長度, 這長度在陣列的生命週期內是固定的, new 運算子會自動將陣列元素用預設值初始化, 例如, 對於所有數字型別(numeric type)是 0, 對所有參考型別是 null.

// type[] arrayName
int[] a = new int[10];
for (int i = 0; i < a.Length; i++) {
  a[i] = i;
}
// 也支援多維陣列
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];

委派 Delegate

一種類型, 具特定參數清單及回傳型別的方法參考, 可以用來當作其他方法的引數, 類似於 C 和 C++ 中的函數指標, 不同在於, 委派為物件導向且類型安全, 是 System.Delegate 類型的衍生, Delegate 類型是 sealed 無法被衍生, 用來定義方法簽章, 確定參數類型與數量以及回傳類型

public delegate void Del(string message);

public static void DelegateMethod(string message)
{
  Console.WriteLine(message);
}

Del handler = DeleteMethod; // 直接指定
Del handler = new Del(DelegateMethod); // 利用 delegate 類別, 建造
handler("Hello World");
// callback 用
public static void MethodWithCallback(int param1, int param2, Del callback)
{
  callback("The number is: " + (param1 + param2).ToString());
}
MethodWith(1, 2, handler);