Po prostu chcę wiedzieć, jeśli istnieje foreach oneliner w języku C#, jak if oneliner (exp) ? then : else
.C# czy dostępny jest oneliner foreach?
Odpowiedz
Jeśli masz do czynienia z tablicą następnie można użyć wbudowanego w statycznej ForEach
metody:
Array.ForEach(yourArray, x => Console.WriteLine(x));
Jeśli masz do czynienia z List<T>
następnie można użyć metody wbudowany ForEach
instancji :
yourList.ForEach(x => Console.WriteLine(x));
nic wbudowaną że będziemy pracować na dowolnym IEnumerable<T>
sekwencji, ale jest to dość łatwe do toczyć własną metodę rozszerzenia, jeśli czujesz, że musisz go:
yourSequence.ForEach(x => Console.WriteLine(x));
// ...
public static class EnumerableExtensions
{
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null) throw new ArgumentNullException("source");
if (action == null) throw new ArgumentNullException("action");
foreach (T item in source)
{
action(item);
}
}
}
foreach
line-wkładki można osiągnąć metodami rozszerzeń LINQ. Na przykład:
zamiast:
var result = new List<string>();
foreach (var item in someCollection)
{
result.Add(item.Title);
}
można:
var result = someCollection.Select(x => x.Title).ToList();
Oczywiście, można użyć coś jak List<>::ForEach
:
List<String> s = new List<string>();
s.Add("These");
s.Add("Is");
s.Add("Some");
s.Add("Data");
s.ForEach(_string => Console.WriteLine(_string));
Podstawowa różnica między wtedy i operator ? jest to, że jeśli jest instrukcja, gdy "?" wytwarza wyrażenie. To znaczy. nie można tego zrobić:
var _ = (exp) ? then : else; // ok
ale nie w ten sposób:
var _ = if (exp) { then; } else { else; }; // error
Więc jeśli szukasz czegoś podobnego wyrażenia foreach nie ma typ .NET może naturalnie powrócić wyjątkiem nieważne, ale nie istnieją żadne wartości typu void, więc można równie wystarczy napisać:
foreach (var item in collection) process(item);
W wielu językach funkcyjnych typu urządzenie jest używane zamiast pustki, która jest wpisać tylko jedną wartość. Można emulować to w .NET i tworzyć własne wyrażenia foreach:
class Unit
{
public override bool Equals(object obj)
{
return true;
}
public override int GetHashCode()
{
return 0;
}
}
public static class EnumerableEx
{
public static Unit ForEach<TSource>(
this IEnumerable<TSource> source,
Action<TSource> action)
{
foreach (var item in source)
{
action(item);
}
return new Unit();
}
}
Istnieje jednak ledwie istnieje żadnych przypadków użycia dla takich wyrażeń.
- 1. Preprocesor Objective-C jest dostępny?
- 2. Czy dostępny jest prosty rejestrator kolorów dostępny dla Haskell?
- 3. C# foreach w pętli foreach
- 4. C# - Czy funkcja jest wywoływana dla każdej iteracji pętli foreach?
- 5. Oneliner do drukowania ciągów w hex?
- 6. Sprawdź, czy dostępny jest moduł node.js
- 7. Wykrywanie, czy Seler jest dostępny/działa
- 8. Czy jest dostępny dowolny pythonowy serwer OpenID?
- 9. Czy dostępny jest interfejs Google Transit API?
- 10. Czy dostępny jest interfejs NavigationTiming na XMLHttpRequests?
- 11. Czy dostępny jest kod źródłowy dostępnych metod?
- 12. Czy w VBA jest dostępny skrót automatyczny?
- 13. GVim: dowiedz się, czy guifont jest dostępny.
- 14. Czy MSMQ jest dostępny na Azure
- 15. Czy jest dostępny darmowy prywatny serwer bazarowy?
- 16. Sprawdź, czy kontekst żądania Flask jest dostępny
- 17. Czy NSAttributedString jest dostępny przed iOS 6?
- 18. Czy jest dostępny edytor GUI .editorconfig?
- 19. Czy w Go jest pętla foreach?
- 20. foreach na liście [C#]
- 21. ASP.NET MVC3 C# - foreach
- 22. Aktywator `.sbt.ivy.lock` nie jest dostępny
- 23. Wykryj, czy OpenGl ES 2.0 jest dostępny czy nie
- 24. Jak ustalić, czy std :: chrono :: monotonic_clock jest dostępny?
- 25. Jak znaleźć plik php jest dostępny lub dostępny bezpośrednio?
- 26. Czy istnieje delegat dostępny dla właściwości w języku C#?
- 27. foreach w C++ int array
- 28. Czy `django model` rodzaj abstrakcji dostępny dla C++?
- 29. Enum w C# i foreach
- 30. C# Groupby Linq i foreach
Dziwne, że nie mają wbudowanych tych rzeczy. Zgaduję, że jeśli ktoś podążyłby za wzorcem Pythona, użyłoby się 'Wybierz' do zbudowania nowego wyliczenia? – Domi