回答編集履歴
1
修正
answer
CHANGED
@@ -68,6 +68,28 @@
|
|
68
68
|
|
69
69
|
delegate はデリゲートを宣言するのに使用するキーワードでしたが、この頭を大文字にした Delegate は型の名前です。すべてのデリゲートは Delegate 型から派生します。
|
70
70
|
|
71
|
+
よって、すべてのデリゲートは Delegate 型にキャストすることができます。
|
72
|
+
|
73
|
+
```C#
|
74
|
+
// デリゲート型 IntBinaryOperation の宣言
|
75
|
+
delegate int IntBinaryOperation(int a, int b);
|
76
|
+
|
77
|
+
static void Main(string[] args)
|
78
|
+
{
|
79
|
+
// デリゲート add の定義
|
80
|
+
IntBinaryOperation add = (a, b) => a + b;
|
81
|
+
|
82
|
+
// add を Delegate 型にキャストして Delegate 型の変数 add2 に入れる
|
83
|
+
Delegate add2 = add;
|
84
|
+
|
85
|
+
// add2 の呼び出し(Delegate 型にキャストしているのでコンパイルエラーになる)
|
86
|
+
Console.WriteLine(add2(2, 3));
|
87
|
+
|
88
|
+
// Delegate 型は次のように呼び出す
|
89
|
+
Console.WriteLine(add2.DynamicInvoke(2, 3));
|
90
|
+
}
|
91
|
+
```
|
92
|
+
|
71
93
|
### まとめ
|
72
94
|
|
73
95
|
- デリゲートは関数の一種であり、ほかの関数を呼び出すことができる
|