回答編集履歴
1
修正
test
CHANGED
@@ -138,6 +138,50 @@
|
|
138
138
|
|
139
139
|
|
140
140
|
|
141
|
+
よって、すべてのデリゲートは Delegate 型にキャストすることができます。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
```C#
|
146
|
+
|
147
|
+
// デリゲート型 IntBinaryOperation の宣言
|
148
|
+
|
149
|
+
delegate int IntBinaryOperation(int a, int b);
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
static void Main(string[] args)
|
154
|
+
|
155
|
+
{
|
156
|
+
|
157
|
+
// デリゲート add の定義
|
158
|
+
|
159
|
+
IntBinaryOperation add = (a, b) => a + b;
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
// add を Delegate 型にキャストして Delegate 型の変数 add2 に入れる
|
164
|
+
|
165
|
+
Delegate add2 = add;
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
// add2 の呼び出し(Delegate 型にキャストしているのでコンパイルエラーになる)
|
170
|
+
|
171
|
+
Console.WriteLine(add2(2, 3));
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
// Delegate 型は次のように呼び出す
|
176
|
+
|
177
|
+
Console.WriteLine(add2.DynamicInvoke(2, 3));
|
178
|
+
|
179
|
+
}
|
180
|
+
|
181
|
+
```
|
182
|
+
|
183
|
+
|
184
|
+
|
141
185
|
### まとめ
|
142
186
|
|
143
187
|
|