您應該避免使用的ArrayList只要有可能。使用List<char>
或char[]
陣列。我已經使用char
,因爲您只持有chars
,但如果您要使用多個字符,則可以將其更改爲string
。
隨着字符數組,可以簡單地做到這一點
string myString = new string(li);
或者,也可以簡單地使用String.Concat方法和通過在列表或數組。
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
這裏,那麼你可以在ArrayList的簡單轉換成字符數組,並使用上述(new string(myCharArray)
)
try
{
tb_output.Text = new string((char[])myArrayList.ToArray(typeof(char)));
}
catch(InvalidCastException ex)
{
//handle any problems with the casting
}
描述的第一個方法我已經添加了try..catch
因爲如果數組列表中有一個元素不能投射到char
那麼會引發InvalidCastException
。 List<char>
通常不需要,因爲您知道列表中只能有chars
,而ArrayList可以有任何對象類型。根據意見
線new string((char[])myArrayList.ToArray(typeof(char))
更新2可以分解。
首先,我們使用的方法ToArray()
myArrayList.ToArray();
但是轉換ArrayList
到Array
,我們要告訴ToArray
方法對每個對象轉換內部到ArrayList到char
因爲,此刻,ArrayList持有object
類型而不是char
類型。所以我們將這些信息傳遞給方法。
myArrayList.ToArray(typeof(char));
我們可以通過做
string newString = new string(arrayOfChars);
目前創建字符數組一個新的字符串我們從ToArray
方法的Array
但這裏的string
構造函數需要字符數組(char[]
),所以我們投,我們有一個char[]
的Array
這就是爲什麼我們有
(char[])myArrayList.ToArray(typeof(char));
所以我們現在有一個來自原始ArrayList的char[]
,並且可以將它傳遞給構造函數string
。
new string((char[])myArrayList.ToArray(typeof(char)));
您還沒有給出爲什麼您使用的是ArrayList
但你必須處理潛在的性能問題和鑄造例外,因爲你可能不小心將物體放入ArrayList的一個原因,可以」 t轉換爲char
(這就是爲什麼我們有Try..Catch
塊)。
你能。嘗試一些下面的答案或使用StringBuffer:var buff = new StringBuffer(); foreach(...){buff.Append(value);} tb_output.Text = buff.ToString(); StringBuffer應該比連接速度快+。 – pasty