Существуют ли анонимные, безопасные для типов, общие подписи делегатов в C # 2.0? - PullRequest
6 голосов
/ 09 октября 2008

Рассмотрим делегата для общей функции от A до B:

public delegate B Fun<A, B>(A x);

Затем я могу написать функцию, которая принимает и вызывает делегат Fun:

public static B invokeFun<A, B>(A x, Fun<A, B> f)
{ return f(x); }

(Неважно, разумно ли писать invokeFun.)

Могу ли я написать invokeFun без имя делегат Fun? Я ожидал, что что-то подобное сработает, но это не так:

public static B invokeFun<A, B>(A x, B (A) f)
{ return f(x); }

1 Ответ

7 голосов
/ 09 октября 2008

Нет, нет.

Самое близкое, что вы можете получить, - это два общих семейства делегатов в .NET 3.5: Func и Action. Очевидно, что они на самом деле отсутствуют в .NET 2.0 (за исключением Action<T>), но написать их тривиально - и действительно, я сделал это для вас :)

Лично я рад, что синтаксис uber-short недопустим - мне труднее понять, чем обычный синтаксис «вот тип, вот имя» для параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...