2010-02-26 164 views
0

时有效:字符串数组转换

string s4 = "H e l l o"; 

string[] arr = s4.Split(new char[] { ' ' });   
foreach (string c in arr) 
{ 
    System.Console.Write(c); 
} 

为什么这是无效

string s4 = "H e l l o"; 

char[] arr = s4.Split(new char[] { ' ' });   
foreach (char c in arr) 
{ 
    System.Console.Write(c); 
} 

广东话我们建立与分配器方法的字符数组。

回答

5

你的意图说

char[] arr = s4.Split(new char[] { ' ' }); 

是告诉编译器比他知道得多,即拆分后的部分将用每一个字符长,你想将它们转换为字符。你为什么不明确告诉他,例如说

char[] arr = s4.Split(new char[] { ' ' }).Select(c => c[0]).ToArray();

+4

+1,但我也想指出的是,这是'斯普利特(PARAMS的char [])'所以你可以说's4.Split(”“)。选择(C => ToArray()' – 2010-02-26 08:09:21

+0

因此,使用LINQ我们可以明确地指导编译器,这很好。 – Gokul 2010-02-26 08:14:31

4

char不是string的子类型,以开始。所以,因为string.Split返回一个字符串数组,它不是一个字符数组,即使每个字符串的长度为1

1

为什么这是无效的

因为Split回报string[]而不是char[]

不能我们用 分割器方法构建一个字符数组。

参见Thomas的答案(使用LINQ)

由于

2

拆分方法返回字符串[],不是char []。即使每个字符串的长度为1.

如果您愿意,可以使用String.toCharArray()。