2012-01-19 45 views

答えて

48
string[] myArray = (string[])myarrayList.ToArray(typeof(string)); 
+1

私はthis.iを試してみましたが、次のエラーが発生しました。 "ソース配列の少なくとも1つの要素を宛先配列型にキャストできませんでした" –

+0

これは非常に遅いのですが、これはおそらく、文字列ではない要素を持つArrayListを持っている可能性があり、要素を文字列にキャストしようとしているためです。これは意味をなさない – Eames

1
using System.Linq; 

public static string[] Convert(this ArrayList items) 
{ 
    return items == null 
     ? null 
     : items.Cast<object>() 
      .Select(x => x == null ? null : x.ToString()) 
      .ToArray(); 
} 
+0

私は次のエラーのエラー\tを取得していますthis.butしようとした「System.Collections.ArrayList」「を選択」と何の拡張メソッドは、タイプ「システムの最初の引数を受け入れる「を選択していない」の定義が含まれていません。 Collections.ArrayList 'が見つかりました(usingディレクティブまたはアセンブリ参照がありませんか?) –

+0

ファイルの先頭に 'using System.Linq;'を含める必要があります。また、 '.Cast ()'コールがありませんでした。 – Nuffin

+0

誰もがdownvoteを説明する気に?私の答えは私にとっては悪いようではない... – Nuffin

1

使用.ToArray(Type)

string[] stringArray = (string[])arrayList.ToArray(typeof(string)); 
+0

emm ...私はdownvoteを得るために何か間違って書いたのですか? :/ – Reniuz

2

ToArray()方法でそれを行う試してみてください。

ArrayList a= new ArrayList(); //your ArrayList object 
var array=(String[])a.ToArray(typeof(string)); // your array!!! 
0

ArrayListオブジェクトのCopyToメソッドを使用できます。

我々は要素として文字列型を持つarraylistを持っているとしましょう。

strArrayList.CopyTo(strArray) 
4

シンプルなGoogleまたはMSDNで検索しても問題ありません。ここで:

ArrayList myAL = new ArrayList(); 

// Add stuff to the ArrayList. 
String[] myArr = (String[]) myAL.ToArray(typeof(string)); 
0

別の方法は次のとおりです。

System.Collections.ArrayList al = new System.Collections.ArrayList(); 
al.Add("1"); 
al.Add("2"); 
al.Add("3"); 
string[] asArr = new string[al.Count]; 
al.CopyTo(asArr); 
関連する問題