2014年5月27日火曜日

C# の配列変換

こんにちは。yu1row です。

配列変換の方法を備忘録として書いておきます。
int[] arr みたいな配列があったとして、これから string[] を得る場合、どしたらいいんでしょうか?

当然、これはダメです。
int[] arr = new int[] { 1, 2, 3 };
string[] dest = (string[])arr; // Can't compile

以下のように単純にループで回せば、まぁいけますよね。
int[] arr = new int[] { 1, 2, 3 };
string[] dest = new string[arr.Length];
for (int i = 0; i < arr.Length; i++)
{
    dest[i] = arr[i].ToString();
} 

Array.CovertAll() を使えばなんかすっきりした感じになる気がします。
int[] arr = new int[] { 1, 2, 3 };
string[] dest = Array.ConvertAll(arr, delegate(int i) { return i.ToString(); });

ラムダ式が使える(C# 3.0以降)のであれば、もっとすっきりした感じになる気がします。
int[] arr = new int[] { 1, 2, 3 };
string[] dest = Array.ConvertAll(arr, i => i.ToString());

これだけです。 もっとカッコイイくて短くてジェネリックで、特殊条件にも対応できるコードにできる方法があれば、誰か教えてください。

0 件のコメント:

コメントを投稿