前提・実現したいこと
配列の全部の要素を回して出力する処理を、LINQ等で簡単に行う方法ってありますか?
ご教示お願いします。
普通のforeach文で回す方法は知っているので、それ以外の方法で知りたいです。
試したこと
配列でそのままForEachを使おうとした場合→エラーが出ました。
C#
1GameObject[] objs = SceneManager.GetActiveScene().GetRootGameObjects(); 2objs.ForEach(x=>Debug.Log(x.name)); //エラー。
エラーメッセージ。
Action使うとか、なんか複雑な処理になりそうなので別の方法を考えることにしました。
There is no argument given that corresponds to the required formal parameter 'action' of 'Array.ForEach<T>(T[], Action<T>)'
toList()を使った場合→出力できました。
C#
1 GameObject[] objs = SceneManager.GetActiveScene().GetRootGameObjects(); 2 objs.ToList().ForEach(x=>Debug.Log(x.name));
Selectで挑戦→エラーが出ました。
C#
1GameObject[] objs = SceneManager.GetActiveScene().GetRootGameObjects(); 2objs.Select(x=>Debug.Log(x.name)); //エラー。
エラーメッセージ。
The type arguments for method 'Enumerable.Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, int, TResult>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
引数が違うみたいですが、どう書けばよいのかわかりません。
質問1~3。
質問1。
「LINQ ForEach」で検索すると、ForEachがLINQのメソッドっぽいように紹介される記事が多数引っ掛かるのですが、
ForEachメソッドって、LINQに関係なく、Listのメソッドですか?
質問2。
質問1がListのメソッドだった場合、LINQでForEachのように配列を全部出力できるメソッドってありますか?
試したことに書いてあるように、Selectでできるかもと挑戦したのですが、できませんでした。
それともSelectでできるのでしょうか?
質問3。
普通のforeach文以外で、配列の全部の要素を回して出力する最も簡単な方法は、
試したことでも書いたようにtoList()を使ったこの方法になるのでしょうか?
C#
1 GameObject[] objs = SceneManager.GetActiveScene().GetRootGameObjects(); 2 objs.ToList().ForEach(x=>Debug.Log(x.name));
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/22 11:11 編集