Предположим, что мы имеем:Являются ли делегаты не только сокращенными интерфейсами?
interface Foo
{
bool Func(int x);
}
class Bar: Foo
{
bool Func(int x)
{
return (x>0);
}
}
class Baz: Foo
{
bool Func(int x)
{
return (x<0);
}
}
Теперь мы можем бросить вокруг бара и Баз как Фоос и вызвать их методы Func.
Делегаты упростить это немного:
delegate bool Foo(int x);
bool Bar(int x)
{
return (x<0);
}
bool Baz(int x)
{
return (x>0);
}
Теперь мы можем бросить вокруг бара и Баз в качестве делегатов Foo.
Какова реальная польза делегатов, за исключением получения более короткого кода?
Интересно отметить, что делегаты могут получить доступ к членам. Метод класса, который должен быть передан, может легко действовать как курьер для результирующих данных, но прямой доступ - это гораздо более быстрый способ сделать это. – 2008-09-18 19:38:26