Delegate и MulticastDelegate
От: igna Россия  
Дата: 02.02.07 08:11
Оценка:
Какой-нибудь .NET-овский язык делает различие между Delegate и MulticastDelegate?
Re: Delegate и MulticastDelegate
От: Saruwatari Россия  
Дата: 02.02.07 12:03
Оценка: 3 (1)
Здравствуйте, igna, Вы писали:

I>Какой-нибудь .NET-овский язык делает различие между Delegate и MulticastDelegate?


На сколько помню, нет. Они все мультикастовые.
Re: Delegate и MulticastDelegate
От: Lloyd Россия  
Дата: 02.02.07 12:07
Оценка: :))
Здравствуйте, igna, Вы писали:

I>Какой-нибудь .NET-овский язык делает различие между Delegate и MulticastDelegate?


C#?
using System;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(typeof(Delegate) == typeof(MulticastDelegate));
        }
    }
}


P.S. А что вы имели в виду?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Delegate и MulticastDelegate
От: Mab Россия http://shade.msu.ru/~mab
Дата: 02.02.07 12:11
Оценка: 1 (1)
Здравствуйте, Lloyd, Вы писали:
L>P.S. А что вы имели в виду?
Скорее в виду то, что все создаваемые компилятором классы-делегаты наследуют от multicast.
Re: Delegate и MulticastDelegate
От: fronter3  
Дата: 02.02.07 12:32
Оценка:
Здравствуйте, igna, Вы писали:

I>Какой-нибудь .NET-овский язык делает различие между Delegate и MulticastDelegate?


это два разных класса
MulticastDelegate derived from Delegate
Re[3]: Delegate и MulticastDelegate
От: cvetkov  
Дата: 02.02.07 13:02
Оценка:
Здравствуйте, Mab, Вы писали:

Mab>Здравствуйте, Lloyd, Вы писали:

L>>P.S. А что вы имели в виду?
Mab>Скорее в виду то, что все создаваемые компилятором классы-делегаты наследуют от multicast.
если возвращаемое тип у них void
delegate int D();

не будет мультикастом по очевидным причинам
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Delegate и MulticastDelegate
От: Mab Россия http://shade.msu.ru/~mab
Дата: 02.02.07 13:04
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>если возвращаемое тип у них void

C>
C>delegate int D();
C>

C>не будет мультикастом по очевидным причинам
А ты скомпилируй, да посмотри Рефлектором, если сомневаешься.
Re[5]: Delegate и MulticastDelegate
От: cvetkov  
Дата: 02.02.07 13:52
Оценка:
Здравствуйте, Mab, Вы писали:

Mab>Здравствуйте, cvetkov, Вы писали:


C>>если возвращаемое тип у них void

C>>
C>>delegate int D();
C>>

C>>не будет мультикастом по очевидным причинам
Mab>А ты скомпилируй, да посмотри Рефлектором, если сомневаешься.
верю на слово. но что тогда будет делать код
D d = a;
d+=b;
d+=c;

int res = d();

надо попробовать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Delegate и MulticastDelegate
От: fronter3  
Дата: 02.02.07 13:57
Оценка:
все delegate = MulticastDeleage
методы по chaining от Delegate
Re[6]: Delegate и MulticastDelegate
От: nikov США http://www.linkedin.com/in/nikov
Дата: 05.02.07 09:17
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>верю на слово. но что тогда будет делать код

C>
C>D d = a;
C>d+=b;
C>d+=c;

C>int res = d();
C>


Ecma-334

22.3 Delegate invocation

Invocation of a delegate instance whose invocation list contains multiple entries, proceeds by invoking each
of the methods in the invocation list, synchronously, in order. Each method so called is passed the same set
of arguments as was given to the delegate instance. If such a delegate invocation includes reference
parameters (§17.5.1.2), each method invocation will occur with a reference to the same variable; changes to
that variable by one method in the invocation list will be visible to methods further down the invocation list.
If the delegate invocation includes output parameters or a return value, their final value will come from the
invocation of the last delegate in the list
. If an exception occurs during processing of the invocation of such a
delegate, and that exception is not caught within the method that was invoked, the search for an exception
catch clause continues in the method that called the delegate, and any methods further down the invocation
list are not invoked.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.