私はちょうどif oneliner (exp) ? then : else
のように、C#でforeach onelinerがあるかどうかを知りたいです。C#にはforeach onelinerがありますか?
11
A
答えて
28
あなたは、あなたが組み込みの静的ForEach
メソッドを使用することができ、配列を扱っている場合:List<T>
を扱っているなら、あなたはForEach
インスタンス組み込みメソッドを使用することができます
Array.ForEach(yourArray, x => Console.WriteLine(x));
を:
yourList.ForEach(x => Console.WriteLine(x));
は、内蔵のものの任意のIEnumerable<T>
配列に対してうまくいくものは何もありませんが、それはあなたがそれを必要と感じた場合、独自の拡張メソッドを巻くだけ簡単です:
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);
}
}
}
5
3
foreach
ラインライナーは、LINQの拡張メソッドを用いて達成することができます。
の代わり:
var result = new List<string>();
foreach (var item in someCollection)
{
result.Add(item.Title);
}
あなたは可能性があります。たとえば
var result = someCollection.Select(x => x.Title).ToList();
2
確かに、あなたは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));
0
場合とオペレータとの間の主な違いを?それは、文が "?"式を生成する。私。もしこれを行うことはできません。
var _ = (exp) ? then : else; // ok
ではなく、この:あなたはforeachの表現のようなものを探しているなら、それは当然のボイドを除いて返すことができます何の.NETタイプが存在しないので、
var _ = if (exp) { then; } else { else; }; // error
を、しかし、そこにvoid型のない値はないので、あなたは均等にだけ書くことができます:ユニットタイプではなく、一つの値だけで入力しているボイドの使用されている多くの関数型言語では
foreach (var item in collection) process(item);
。これを.NETでエミュレートし、独自の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();
}
}
このような式にはほとんどのケースがありません。
関連する問題
- 1. Python 3には 'foreach'関数がありますか?
- 2. Pythonにはモジュールがありますが、C++には何がありますか?
- 3. foreachループ内に2つの配列がありますか?
- 4. foreachの無効な引数に問題がありますか?
- 5. foreachリストにある[C#]
- 6. foreach文の代替手段はありますか?
- 7. Foreachループが抜け出すには非常に時間がかかります
- 8. SFTPコミュニケーションはC#にありますか?
- 9. C#にはすでにConditional Zip関数がありますか?
- 10. にはクラスタイプC++がありません
- 11. なぜ私のforeachファイルコンテナループはありませんか?
- 12. Magentoの - 以下のforeachループがありますカートページで$アイテム
- 13. C#は、UrlEncodedにシリアル化するメソッドがありますか?
- 14. extern "C"はC言語で効果がありますか?
- 15. Frama-C Windowsバイナリがありますか?
- 16. C++のBoostライブラリに似たCライブラリリソースがありますか?
- 17. C/C++にギザギザの配列がありますか?
- 18. apache httpcomponentsに似たC/C++ライブラリがありますか?
- 19. C#のwifiポジショニングには良いフレームワーク/ SDKがありますか?
- 20. Cには関数のオーバーライドがありますか?
- 21. cにはP2Pフレームワークがありますか?
- 22. C#アセンブリ、アセンブリ内には何がありますか?
- 23. 基本C++の後には何がありますか?
- 24. C#4には一般的な属性がありますか?
- 25. Javaには自動プロパティがありますか? C#で
- 26. JavaにはC#のような属性がありますか?
- 27. インテルC++コンパイラにはリソースコンパイラがありますか?
- 28. C#には辞書のContainsAny()メソッドがありますか?
- 29. C#にはクライアント側のデータベース実装がありますか
- 30. C++には空き領域がありますか?
奇妙なことに、このようなものは組み込まれていません。もし私がPythonパターンに従えば、新しい列挙体を構築するのに 'Select'を使うでしょうか? – Domi