2013-01-22 23 views
0

使用.ToArray()函数时,是否需要隐式定义数组的大小才能容纳要转换的列表中的字符?使用.ToArray()将字符串列表转换为数组使用.ToArray()

String [] array = List.ToArray(); 

我试着这样做,因为我需要使用数组的.GetValue()能力,然而,阵列保持尺寸的1,而不是从列表拿着材料。我是否尝试错误地使用.ToArray()

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

String [] cd = colAndDelimiter.ToArray(); 

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

+0

值要做到这一点你有没有调试,以确保名单绝对包含多个单一项目? –

+0

什么是完全列表? – mikesjawnbit

+0

你正在做的事其他的东西是错的 –

回答

2

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

var array = List.ToArray(); 

有没有理由使用Array.GetValue而不是建在List<T>本身 EG的功能:

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

只要你List对象是一些IEnumerable的(或类似),有项目在它里面,这应该确实将你的列表转换为数组。

需要注意的是,一旦你已经创建了这个数组,将元素添加到列表不会也把它添加到阵列

4

你并不需要将其转换为一个数组来获得特定字符了。

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

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

编辑:

是它存储的一切作为一个单一的项目,这就是为什么阵列只显示一个地方?

是的,是的。你正在制作一个包含stringstring s的清单:text的全部内容 - 看起来你想要的是将它逐字逐字地分开,这就是上述方法所能实现的。

1

你在做什么很好..但让说,你不知道的 string[] cd大小,那么你可以这样做以下

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

找到光盘中的数据的位置 字符串值= CD [0];

更新: 如果您想根据被存储在一个单一的线,那么你可以做到这一点,而不必申报cd变量string[] cd;

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