2015-12-16 41 views
0

我們可以使用使用泛型的組播代表嗎?請用下面的代碼解釋它是如何可能的。組播代表

delegate string multidelegate<T1,T2>(T1 a,T2 b); 

class mylogic 
{ 
    public void Method1(int a, int b) 
    { 
     Console.WriteLine("This is Method1 where value of multiplication is {0}",a*b); 
    } 

    public void Method2(double a, double b) 
    { 
     Console.WriteLine("This is Method2 where the value of multiplication is {0}",a*b); 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     multidelegate<int,int> del = new multidelegate<int,int>(new mylogic().Method1).Tostring(); 
     del += Convert.ToString(new multidelegate<double,double>(new mylogic().Method2).Tostring()); 

     del(32,51); 
    } 
} 
+2

除非你在談論的人在印度社會跨越邊界,我覺得你的意思是「多播」,而不是「Multicaste」 –

回答

2

所有代表在C#中的多路廣播委託,你可以有通用的代表,所以是的,你可以有通用的多路廣播委託。所有通用代理都是通用多播代表。

但是,如果泛型參數不同,則不能組合泛型委託的兩個實例。您只能將同一個委託的實例與相同的泛型類型參數組合在一起。這應該是有道理的,因爲能夠結合代表的全部意義在於他們需要有相同的合同;他們需要接受相同的參數並輸出相同類型的輸出。如果通用論證不同,那就不是這樣了。

-1

我們可以使用使用泛型的多播委託嗎? 多播委託是通過委託調用多個訂閱者並將調用結果返回給最後一個訂閱者的動作。

您應該使用Func鍵代表,而不是你的multidelegate

+1

只是顯示的代碼將無法編譯,出於幾個原因,所以不,它不會做你所聲稱的。 – Servy