私はちょうど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ループに何か問題はありますか?
- 4. foreachリストにある[C#]
- 5. foreachループ内に2つの配列がありますか?
- 6. foreachの無効な引数に問題がありますか?
- 7. Groovy onelinerが環境変数
- 8. JSPテンプレート:FORまたはFOREACH反復のコマンドがあります
- 9. Cにローカルバインディングがありますか?
- 10. Javascript - TypeError:オブジェクト[オブジェクトオブジェクト]にはメソッド 'forEach'がありません
- 11. C/C++には標準のスライスコンテナがありますか?
- 12. TypeScriptにはC#の実装と同様のforeach構造体がありますか?
- 13. foreachの最後に区切り文字がありません
- 14. SFTPコミュニケーションはC#にありますか?
- 15. foreachループ内に2つ以上の変数があります
- 16. WPクエリForeachに無限ループがあります
- 17. foreach文の代替手段はありますか?
- 18. C#にはすでにConditional Zip関数がありますか?
- 19. C++関数mainにはすでにボディがありますか?
- 20. C#が、私はこの機能部分であるforeach文を持つforeach文
- 21. C++ヒープオブジェクトにスタックメンバーまたはヒープメンバーがありますか?
- 22. C#SVCサーバーオブジェクトにはパブリックメソッドがあり、クライアントオブジェクトはありません
- 23. Rustにはデバッグマクロがありますか? Cでは
- 24. にはクラスタイプC++がありません
- 25. C#のプロパティには、常に「バックグラウンド」のバックアップフィールドがありますか?
- 26. Foreachループが抜け出すには非常に時間がかかります
- 27. extern "C"はC言語で効果がありますか?
- 28. C#は、UrlEncodedにシリアル化するメソッドがありますか?
- 29. PHP初心者はforeachループを手にする必要があります
- 30. Frama-C Windowsバイナリがありますか?
奇妙なことに、このようなものは組み込まれていません。もし私がPythonパターンに従えば、新しい列挙体を構築するのに 'Select'を使うでしょうか? – Domi