使用.ToArray()将字符串列表转换为数组

时间:2013-01-22 01:34:35

标签: c# toarray iqueryable.toarray

使用.ToArray()函数时,是否需要隐式定义数组的大小以保存您要转换的列表中的字符?

String [] array = List.ToArray();

我尝试这样做是因为我需要使用数组的.GetValue()能力,但是,数组保持大小为1而不保留列表中的材质。我是否尝试错误地使用.ToArray()

colAndDelimiter = new List<string>();
colAndDelimiter.Add(text);

String [] cd = colAndDelimiter.ToArray();

这是影响数组的所有代码。当我Console.WriteLine()列表时,它为我提供了整个文本。我可能会对列表如何工作感到困惑。它是否将所有内容存储为单个项目,这就是为什么数组只显示一个位置?

4 个答案:

答案 0 :(得分:5)

您无需将其转换为数组即可获取特定字符。

只需使用text[index]即可获得所需的角色。

如果您确实需要它作为数组,请使用String.ToCharArray() - 您希望数组char不是string数组。

编辑:

  

它是否将所有内容存储为单个项目,这就是为什么数组只显示一个位置?

是的,是的。您正在列出包含string的{​​{1}}个stringtext的全部内容 - 您想要的是将其逐字拆分,这就是以上方法将实现。

答案 1 :(得分:2)

它应该可以正常工作,但请确保var运算符确定。

var array = List.ToArray();

是否有理由使用Array.GetValue代替List<T>本身的内置函数 EG:

 string value = List.ElementAt(1);
 var values = List.GetRange(0, 5);

答案 2 :(得分:1)

你做的很好......但是我们说你不确定它的大小 string[] cd然后您可以执行以下操作

var colAndDelimiter = new List<string>();
colAndDelimiter.Add(text);
String[] cd = { }; 
cd =  colAndDelimiter.ToArray();

在cd中找到数据的位置     string value = cd [0];

更新: 如果您想根据存储在一行中的值执行此操作,则可以执行此操作,而无需将cd变量声明为string[] cd;

var colAndDelimiter = new List<string>();
colAndDelimiter.Add("Hello, World, Week, Tuesday");
var cd = colAndDelimiter[0].Split(',');

答案 3 :(得分:0)

只要您的List对象是包含其中项目的IEnumerable(或类似对象),这确实应该将您的List转换为数组。

请注意,创建此数组后,向List添加元素也不会将其添加到数组