Czy można odrzucić niektóre argumenty w wyrażeniach lambda, nie nadając im nazwy? E.g. Muszę zdać Action < int, int >, ale jestem zainteresowany tylko w drugim param, chcę napisać coś podobnegoC# Bezimienne parametry lambda
(_, foo) => bar(foo)
// or
(, foo) => bar(foo)
w pierwszym przypadku to działa. Ale pierwszy parametr nie jest tak naprawdę nienazwany, ponieważ ma on nazwę "_". Więc to nie działa, kiedy chcę odrzucić dwa lub więcej. Wybieram _, ponieważ w prologu ma on znaczenie "dowolna wartość".
So. Czy jest jakaś specjalna postać lub wyrażenie do mojego przypadku użycia?
'_' * ma * ma specjalne znaczenie jak w C# 7. Nie dla nazw parametrów wyrażeń lambda (o ile wiem), ale zdecydowanie dla innych rzeczy, takich jak dopasowywanie wzorców, dekonstrukcja, zmienne 'out', a nawet regularne przypisania. (Na przykład, możesz użyć '_ = 5;' bez deklarowania '_'.) Rozumiem, że ta odpowiedź została napisana kilka lat przed C# 7, ale biorąc pod uwagę, że ostatnia linia stała się niepoprawna, dobrze byłoby ją edytować, jeśli masz czas. –
@JonSkeet Dzięki za uwagę, dodałem Twoje komentarze w edycji. Muszę lepiej przewidzieć przyszłość. –
Często znajduję się w tej samej pozycji - w tym przypadku nie zauważyłem, że była to stara odpowiedź od dłuższego czasu ... nowa odpowiedź postawiła pytanie na pierwszej stronie. –