Запишите лямбду или анонимную функцию, которая принимает параметр [дубликат]

9
задан dorn 2 January 2010 в 04:02
поделиться

1 ответ

Вы можете использовать как лямбда, так и анонимный синтаксис делегата - достаточно указать тип аргумента и пометить его как:

public delegate bool CutoffDateDelegate( out DateTime cutoffDate );

// using lambda syntax:
CutoffDateDelegate d1 = 
    (out DateTime dt) => { dt = DateTime.Now; return true; };

// using anonymous delegate syntax:
CutoffDateDelegate d2 = 
    delegate( out DateTime dt ) { dt = DateTime.Now; return true; }

Хотя явное объявление аргументов как ref/out ожидается, объявление типов аргументов в выражении лямбда встречается реже, так как компилятор обычно может их вывести. В данном случае, однако, компилятор в настоящее время не делает выводов о типах аргументов out или ref в лямбда/анонных выражениях. Я не уверен, является ли такое поведение ошибкой/переосмыслением, или есть языковая причина, по которой это должно быть так, но есть достаточно простой обходной путь.

EDIT: Я сделал быструю проверку в VS2010 β2, и все равно похоже, что нужно определить типы аргументов - они не выведены для C# 4.

.
19
ответ дан 4 December 2019 в 11:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: