文字列形式の整数の配列があります:
var arr = new string[] { "1", "2", "3", "4" };
これをさらに推し進めるには、「実数」の整数の配列が必要です。
void Foo(int[] arr) { .. }
int にキャストしようとしましたが、もちろん失敗しました。
Foo(arr.Cast<int>.ToArray());
次にできること:
var list = new List<int>(arr.Length);
arr.ForEach(i => list.Add(Int32.Parse(i))); // maybe Convert.ToInt32() is better?
Foo(list.ToArray());
または
var list = new List<int>(arr.Length);
arr.ForEach(i =>
{
int j;
if (Int32.TryParse(i, out j)) // TryParse is faster, yeah
{
list.Add(j);
}
}
Foo(list.ToArray());
しかし、どちらも見た目が醜いです。
タスクを完了する他の方法はありますか?
ベストアンサー1
配列が与えられた場合は、Array.ConvertAll
方法:
int[] myInts = Array.ConvertAll(arr, s => int.Parse(s));
ラムダを省略して、以下に示すような短いバージョンを生成できることを指摘してくれた Marc Gravell に感謝します。
int[] myInts = Array.ConvertAll(arr, int.Parse);
LINQ ソリューションも同様ですが、ToArray
配列を取得するために追加の呼び出しが必要になります。
int[] myInts = arr.Select(int.Parse).ToArray();