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