できる限り 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);
本当にArrayList
here を使用する必要がある場合は、単にその 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 内のすべてのオブジェクトを に変換するよう伝えたいと考えています。そのため、その情報をメソッドに渡します。char
object
char
myArrayList.ToArray(typeof(char));
次のようにして、文字の配列から新しい文字列を作成できます。
string newString = new string(arrayOfChars);
現時点ではメソッドArray
からがありますが、ここのコンストラクターには chars ( ) の配列が必要なので、持っている をにキャストします。ToArray
string
char[]
Array
char[]
(char[])myArrayList.ToArray(typeof(char));
これでchar[]
、元の ArrayList から が取得され、それをstring
コンストラクターに渡すことができます。
new string((char[])myArrayList.ToArray(typeof(char)));
を使用している理由をまだ説明していませんがArrayList
、潜在的なパフォーマンスの問題に対処し、例外をキャストする必要がありますchar
。なぜ私たちはTry..Catch
ブロックを持っているのですか)。