2015-12-16 3 views
0

Можем ли мы использовать делегаты многоадресной передачи, используя Generics? Пожалуйста, объясните приведенным ниже кодом, как это возможно.Многоадресные делегаты

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

Если вы говорите о людях, в Индии, пересекающих социальные границы, я думаю, что вы имеете в виду «Multicast», а не «Multicaste» –

ответ

2

Все делегатов в C# являются многоадресными делегатами, и вы можете иметь общие делегат, да так, что вы можете иметь общие многоадресные делегат. Все общие делегаты являются универсальными делегатами многоадресной рассылки.

Однако вы не можете комбинировать два экземпляра общего делегата, если они имеют разные общие аргументы. Вы можете комбинировать экземпляры одного и того же делегата с одинаковыми аргументами общего типа. Это должно иметь смысл, поскольку весь смысл объединения делегатов состоит в том, что они должны иметь один и тот же контракт; они должны принимать те же аргументы и выводить один и тот же тип вывода. Если общие аргументы различны, это не так.

-1

Можем ли мы использовать делегаты многоадресной передачи, используя Generics? Да Делегаты многоадресной рассылки - это вызов вызова нескольких подписчиков через вашего делегата и возврат результата вызова последнему абоненту.

Вы должны использовать Func делегат вместо вашей multidelegate

+1

Код, показанный просто не скомпилируется, по нескольким причинам, поэтому нет, он не будет делать то, что вы утверждаете. – Servy

Смежные вопросы