teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2020/09/28 08:11

投稿

Zuishin
Zuishin

スコア28675

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
  - デリゲートは関数の一種であり、ほかの関数を呼び出すことができる