Несколько вопросов С# в StackOverflow спросят, как сделать анонимных делегатов /lambdas с параметрами out
или ref
. См. Например:
- Вызов метода с параметрами ref или out из анонимного метода
- Напишите функцию лямбды или анонимности, которая принимает параметр out
Для этого вам просто нужно указать тип параметра, например:
public void delegate D(out T p);
// ...
D a = (out T t) => { ... }; // Lambda syntax.
D b = delegate(out T t) { ... }; // Anonymous delegate syntax.
Мне интересно, почему тип явно требуется. Есть ли особая причина в том, что это так? То есть, с точки зрения компилятора/языка, почему не разрешено следующее?
D a = (out t) => { ... }; // Lambda syntax -- implicit typing.
D b = delegate(out t) { ... }; // Anonymous delegate syntax -- implicit typing.
или даже лучше, просто:
D a = (t) => { ... }; // Lambda syntax -- implicit typing and ref|out-ness.
D b = delegate(t) { ... }; // Anonymous delegate syntax -- implicit typing and ref|out-ness.