できる限り ArrayLists の使用を避ける必要があります。使用List<char>またはchar[]配列のいずれかです。持っcharているだけなので使いましたが、複数のキャラを使う場合はcharsこれに変更できます。string
char配列を使用すると、これを簡単に実行できます
string myString = new string(li);
または、単純にString.Concatメソッドを使用して、List または Array を渡すこともできます。
tb_output.Text = String.Concat(myArrayOrList);
コメントを明確にするための更新
を使用したい場合はList<T>、これを行うことができます。
List<char> li = new List<char>() { 's', 'a', 'h', 'i', 'l' };
tb_output.Text = String.Concat(li);
本当にArrayListhere を使用する必要がある場合は、単にその ArrayList を文字の配列に変換し、上記の最初の方法を使用できます ( new string(myCharArray))
try
{
tb_output.Text = new string((char[])myArrayList.ToArray(typeof(char)));
}
catch(InvalidCastException ex)
{
//handle any problems with the casting
}
ArrayList にブロックを追加しました。これtry..catchは、配列リストに a にキャストできない要素がある場合char、anInvalidCastExceptionがスローされるためです。ArrayList は任意のオブジェクト型を持つことができるのに対し、List<char>リストにはそれらしか持てないことがわかっているため、これは一般に a では必要ありません。chars
コメントに基づいて2を更新
線new string((char[])myArrayList.ToArray(typeof(char))が切れる可能性があります。
まず、メソッドToArray()ArrayListを使用してを に変換します。Array
myArrayList.ToArray();
ただし、現時点では ArrayList は型ではなく型を保持しToArrayているため、メソッドに ArrayList 内のすべてのオブジェクトを に変換するよう伝えたいと考えています。そのため、その情報をメソッドに渡します。charobjectchar
myArrayList.ToArray(typeof(char));
次のようにして、文字の配列から新しい文字列を作成できます。
string newString = new string(arrayOfChars);
現時点ではメソッドArrayからがありますが、ここのコンストラクターには chars ( ) の配列が必要なので、持っている をにキャストします。ToArraystringchar[]Arraychar[]
(char[])myArrayList.ToArray(typeof(char));
これでchar[]、元の ArrayList から が取得され、それをstringコンストラクターに渡すことができます。
new string((char[])myArrayList.ToArray(typeof(char)));
を使用している理由をまだ説明していませんがArrayList、潜在的なパフォーマンスの問題に対処し、例外をキャストする必要がありますchar。なぜ私たちはTry..Catchブロックを持っているのですか)。