Invoke
語法模板符號 | 描述 | 範例程式碼 | 說明 |
---|---|---|---|
Invoke |
調用委派指向的方法 | csharp<br>MyDelegate myDelegate = (x, y) => x + y;<br>int result = myDelegate.Invoke(5, 10);<br> |
使用 Invoke 方法來執行委派,並傳遞參數。 |
BeginInvoke |
異步調用委派 | csharp<br>myDelegate.BeginInvoke(5, 10, callback, state);<br> |
開始異步調用委派,可以在調用完成後執行回調方法。 |
EndInvoke |
結束異步調用 | csharp<br>int result = myDelegate.EndInvoke(asyncResult);<br> |
結束異步調用,獲取返回值和處理任何引發的例外。 |
Action |
委派不返回值的方法 | csharp<br>Action<string> greet = name => Console.WriteLine($"Hello, {name}!");<br>greet("World");<br> |
Action 可以用來定義不返回值的方法,最多可有 16 個參數。 |
Func |
委派返回值的方法 | csharp<br>Func<int, int, int> multiply = (x, y) => x * y;<br>int result = multiply(5, 10);<br> |
Func 可以用來定義有返回值的方法,最多可有 16 個參數。 |
Predicate |
委派返回布林值的方法 | csharp<br>Predicate<int> isEven = num => num % 2 == 0;<br>bool result = isEven(4);<br> |
Predicate 用於測試某個條件,返回 true 或 false 。 |
ArrayList
符號 | 描述 | 範例程式碼 | 說明 |
---|---|---|---|
ArrayList |
一個動態大小的陣列集合類型 | csharp<br>ArrayList list = new ArrayList();<br>list.Add(1);<br>list.Add("hello");<br> |
ArrayList 是非泛型集合,可以存放任何類型的物件。 |
Add |
將元素添加到 ArrayList 中 |
csharp<br>list.Add(100);<br> |
添加元素到 ArrayList 的末尾,無需指定大小。 |
Remove |
移除指定的元素 | csharp<br>list.Remove(100);<br> |
移除第一個符合指定值的元素。 |
RemoveAt |
根據索引移除元素 | csharp<br>list.RemoveAt(0);<br> |
移除指定索引位置的元素。 |
Count |
獲取 ArrayList 中的元素數量 |
csharp<br>int count = list.Count;<br> |
返回 ArrayList 中元素的數量。 |
Contains |
判斷是否包含指定元素 | csharp<br>bool exists = list.Contains("hello");<br> |
檢查 ArrayList 是否包含某個元素。 |
IndexOf |
獲取指定元素的索引 | csharp<br>int index = list.IndexOf(1);<br> |
返回元素第一次出現的索引,找不到則返回 -1。 |
Hashtable
符號 | 描述 | 範例程式碼 | 說明 |
---|---|---|---|
Hashtable |
鍵值對的集合 | csharp<br>Hashtable hashtable = new Hashtable();<br>hashtable.Add("key1", "value1");<br> |
Hashtable 是一個非泛型集合,用於儲存鍵值對。 |
Add |
添加鍵值對 | csharp<br>hashtable.Add("key2", "value2");<br> |
將指定的鍵和值添加到 Hashtable 中。 |
Remove |
移除指定鍵的鍵值對 | csharp<br>hashtable.Remove("key1");<br> |
移除指定鍵及其對應的值。 |
Contains |
判斷是否包含指定鍵 | csharp<br>bool exists = hashtable.Contains("key2");<br> |
檢查 Hashtable 是否包含某個鍵。 |
Count |
獲取 Hashtable 中的鍵值對數量 |
csharp<br>int count = hashtable.Count;<br> |
返回 Hashtable 中鍵值對的數量。 |
Keys |
獲取所有鍵 | csharp<br>ICollection keys = hashtable.Keys;<br> |
返回 Hashtable 中所有鍵的集合。 |
Values |
獲取所有值 | csharp<br>ICollection values = hashtable.Values;<br> |
返回 Hashtable 中所有值的集合。 |
DictionaryEntry |
存放鍵值對的結構 | csharp<br>DictionaryEntry entry = new DictionaryEntry("key", "value");<br> |
表示 Hashtable 中的一個鍵值對,包含 Key 和 Value 屬性。 |
Key |
獲取鍵 | csharp<br>var key = entry.Key;<br> |
獲取 DictionaryEntry 中的鍵。 |
Value |
獲取值 | csharp<br>var value = entry.Value;<br> |
獲取 DictionaryEntry 中的值。 |
C# 的委派(Delegate)是一種特殊的類型,用來持有對方法的引用。它可以存儲和調用一個或多個方法,類似於指標(在其他語言中)的概念,但更加安全。
委派的作用是允許方法作為參數傳遞或動態地選擇要執行的方法。宣告時,你需要指定方法的返回類型和參數,然後可以分配符合該簽名的方法。
定義委派
public delegate int MyDelegate(int x, int y);
將方法綁定到委派
public class Example
{
public int Add(int a, int b)
{
return a + b;
}
}
// 使用委派
Example example = new Example();
MyDelegate del = new MyDelegate(example.Add);
int result = del(3, 4); // 調用Add方法,result會是7
多播委派 委派可以同時指向多個方法,並在調用時依序執行它們。
MyDelegate del = new MyDelegate(example.Add);
del += example.Subtract; // 可以新增更多的方法
這些都是常見的委派用途。