您应该尽可能避免使用 ArrayLists。使用List<char>
或char[]
数组。我使用过char
是因为您只是持有chars
,但string
如果您要使用多个角色,您可以将其更改为。
使用 char 数组,您可以简单地执行此操作
string myString = new string(li);
或者,您可以简单地使用String.Concat方法并传入 List 或 Array。
tb_output.Text = String.Concat(myArrayOrList);
更新以澄清评论
如果你想使用 a 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
为 ArrayList 添加了一个块,因为如果数组列表中有一个元素无法转换为 a ,则抛出char
an 。InvalidCastException
a 通常不需要这样做,List<char>
因为您知道列表只能包含chars
在其中,而 ArrayList 可以具有任何对象类型。
根据评论更新 2
new string((char[])myArrayList.ToArray(typeof(char))
可以断线。
首先,我们使用ToArray()方法将 转换ArrayList
为Array
myArrayList.ToArray();
但是,我们想告诉该ToArray
方法将 ArrayList 中的每个对象转换为 a char
,因为此时 ArrayList 保存的是object
类型而不是char
类型。所以我们将这些信息传递给方法。
myArrayList.ToArray(typeof(char));
我们可以通过执行从一个字符数组创建一个新字符串
string newString = new string(arrayOfChars);
目前我们有一个Array
fromToArray
方法,但是string
这里的构造函数需要一个 chars ( ) 数组,char[]
所以我们将Array
我们必须的转换为 achar[]
这就是为什么我们有
(char[])myArrayList.ToArray(typeof(char));
所以我们现在有一个char[]
来自原始 ArrayList 的,并且可以将它传递给string
构造函数。
new string((char[])myArrayList.ToArray(typeof(char)));
您仍然没有给出使用 an 的原因,ArrayList
但是您必须处理潜在的性能问题和强制转换异常,因为您可能会不小心将一个无法转换为 a 的对象放入 ArrayList char
(即为什么我们有Try..Catch
块)。