質問編集履歴
3
例
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -11,6 +11,17 @@ | |
| 11 11 | 
             
            言葉で言っても伝わりにくいと思うので、以下のような感じです。
         | 
| 12 12 |  | 
| 13 13 | 
             
            ```C# 
         | 
| 14 | 
            +
            clas SampleClass
         | 
| 15 | 
            +
            {
         | 
| 16 | 
            +
                public int x;
         | 
| 17 | 
            +
                public int y;
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                overrode public string ToString()
         | 
| 20 | 
            +
                {
         | 
| 21 | 
            +
                    return x.ToString() + y.ToString();
         | 
| 22 | 
            +
                }
         | 
| 23 | 
            +
            }
         | 
| 24 | 
            +
             | 
| 14 25 | 
             
            void Bar<T>(T a)
         | 
| 15 26 | 
             
            {
         | 
| 16 27 | 
             
                Console.WriteLine(a.ToString());
         | 
| @@ -26,7 +37,7 @@ | |
| 26 37 | 
             
            {
         | 
| 27 38 | 
             
                myDelegate<int>(1);
         | 
| 28 39 | 
             
                myDelegate<string>("sssss");
         | 
| 29 | 
            -
                myDelegate< | 
| 40 | 
            +
                myDelegate<SampleClass>(new SampleClass{x=1, y=1});
         | 
| 30 41 | 
             
            }
         | 
| 31 42 |  | 
| 32 43 | 
             
            void Hoge()
         | 
| @@ -37,4 +48,7 @@ | |
| 37 48 | 
             
            ```
         | 
| 38 49 |  | 
| 39 50 | 
             
            上記のようなことをするための良い方法はないでしょうか。
         | 
| 40 | 
            -
            よろしくお願い致します。
         | 
| 51 | 
            +
            よろしくお願い致します。
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            <補足>
         | 
| 54 | 
            +
            質問がよくなかったので、`SampleClass`というのを追加しました。
         | 
2
コードを修正
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -4,7 +4,7 @@ | |
| 4 4 | 
             
            C#にて、ジェネリックな引数を持つデリゲートを以下のように定義します。
         | 
| 5 5 |  | 
| 6 6 | 
             
            ```C#
         | 
| 7 | 
            -
            delegate void  | 
| 7 | 
            +
            delegate void MyDelegate<T>(T arg);
         | 
| 8 8 | 
             
            ```
         | 
| 9 9 |  | 
| 10 10 | 
             
            このデリゲートを引数として持つメソッドを定義し、そのメソッド内でジェネリックにデリゲートを使用したいです。しかし、うまくいきません。
         | 
| @@ -22,11 +22,11 @@ | |
| 22 22 | 
             
            }
         | 
| 23 23 |  | 
| 24 24 | 
             
            // これはコンパイルが通らない
         | 
| 25 | 
            -
            void Foo( | 
| 25 | 
            +
            void Foo(MyDelegate myDelegate)
         | 
| 26 26 | 
             
            {
         | 
| 27 | 
            -
                 | 
| 27 | 
            +
                myDelegate<int>(1);
         | 
| 28 | 
            -
                 | 
| 28 | 
            +
                myDelegate<string>("sssss");
         | 
| 29 | 
            -
                 | 
| 29 | 
            +
                myDelegate<Object>(null);
         | 
| 30 30 | 
             
            }
         | 
| 31 31 |  | 
| 32 32 | 
             
            void Hoge()
         | 
1
コードを詳細にした
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -11,6 +11,16 @@ | |
| 11 11 | 
             
            言葉で言っても伝わりにくいと思うので、以下のような感じです。
         | 
| 12 12 |  | 
| 13 13 | 
             
            ```C# 
         | 
| 14 | 
            +
            void Bar<T>(T a)
         | 
| 15 | 
            +
            {
         | 
| 16 | 
            +
                Console.WriteLine(a.ToString());
         | 
| 17 | 
            +
            }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            void Baz<T>(T a)
         | 
| 20 | 
            +
            {
         | 
| 21 | 
            +
                Console.WriteLine(a.GetType().ToString());
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
             | 
| 14 24 | 
             
            // これはコンパイルが通らない
         | 
| 15 25 | 
             
            void Foo(BarDelegate barDelegate)
         | 
| 16 26 | 
             
            {
         | 
| @@ -18,6 +28,12 @@ | |
| 18 28 | 
             
                barDelegate<string>("sssss");
         | 
| 19 29 | 
             
                barDelegate<Object>(null);
         | 
| 20 30 | 
             
            }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            void Hoge()
         | 
| 33 | 
            +
            {
         | 
| 34 | 
            +
                Foo(Bar);
         | 
| 35 | 
            +
                Foo(Baz);
         | 
| 36 | 
            +
            }
         | 
| 21 37 | 
             
            ```
         | 
| 22 38 |  | 
| 23 39 | 
             
            上記のようなことをするための良い方法はないでしょうか。
         | 
