может кто-нибудь помочь мне понять, что на самом деле происходит в следующем примере, чтобы я мог ловить для себя в будущем ... как понять, почему возникает ошибка или как ее устранить без просто переписываю ...
данный метод этого метода:
public static void DoNothing(string v)
{
// do nothing
}
Попытка выполнить его таким образом выдает ошибку " аргументы типа для метода .. не может быть выведена. Попробуйте указать аргументы типа явно. ":
myList.Select(x => DoNothing(x)); // does not work
var r = myList.Select(x => DoNothing(x)); // just a ?
Однако, как только он что-то возвращает, т. Е.
private static string ReturnString(string v)
{
return v;
}
это прекрасно работает:
myList.Select(x => ReturnString(x)); // works
var r = myList.Select(x => ReturnString(x)); // IEnumerable<string>
так что я думаю, это как-то связано с типом возврата void?
могу ли я никогда не работать из-за того, что ничего не возвращено, или есть какой-то магический синтаксис, который я пропускаю / не могу понять (!)
Единственный способ, которым я могу заставить это работать, заключается в следующем:
foreach (var item in myList)
{
DoNothing(item); // works fine.
}
Заранее спасибо!