1

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

String [] array = List.ToArray();

我尝试这样做是因为我需要使用.GetValue()数组的功能,但是,数组保持大小为 1 并且不保存列表中的材料。我是否试图.ToArray()错误地使用?

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

String [] cd = colAndDelimiter.ToArray();

这是我拥有的所有影响数组的代码。当我Console.WriteLine()列出清单时,它给了我整个文本。我可能对列表的工作方式感到困惑。是否将所有内容都存储为单个项目,这就是数组只显示一个位置的原因?

4

4 回答 4

5

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

只需使用text[index]即可获得所需的字符。

如果你真的需要它作为一个数组,使用String.ToCharArray()- 你想要一个数组而char不是string.

编辑:

是否将所有内容都存储为单个项目,这就是数组只显示一个位置的原因?

是的,是的。您正在制作一个strings 列表,其中包含一个string: 的全部内容text- 您似乎想要的是逐个字母地拆分它,这就是上述方法将实现的。

于 2013-01-22T01:48:44.187 回答
2

它应该可以正常工作,但请尝试var操作员确定。

var array = List.ToArray();

是否有理由使用而不是本身 EGArray.GetValue的内置功能:List<T>

 string value = List.ElementAt(1);
 var values = List.GetRange(0, 5);
于 2013-01-22T01:38:13.530 回答
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(',');
于 2013-01-22T01:50:33.930 回答
0

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

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

于 2013-01-22T01:38:57.093 回答