Я не знаю, почему, возможно, не реализовано, или какие-то проблемы с компилятором, чтобы это сделать.
Не забывайте, что делегаты - это сигнатуры / прототипы методов, а Action
- типы, на самом деле это не одно и то же, даже если delegate
можно преобразовать в Action
или Func
.
Следовательно, если вы хотите использовать ключевое слово var
, вы можете преобразовать его, написав:
var action = (Action<string>)delegate(string s)
{
Console.WriteLine(s);
};
Также вы можете просто использовать лямбда , чтобы получить более чистый код:
Action<string> action = str =>
{
Console.WriteLine(str);
};
И только для одной инструкции:
Action<string> action = text => Console.WriteLine(text);