首页 新闻 会员 周边 捐助

string.ToCharArray()会发生拆箱操作吗?

0
悬赏园豆:10 [已解决问题] 解决于 2009-01-17 12:48

比如下面这段代码:

string str="hello world !";

char[] chars = str.ToCharArray();

会发生拆箱操作吗?

我有大量的字符串要进行这样的操作,性能会不会太差?

问题补充: 谢谢各位的认真回覆! 我也认为不会,之前不太确定,才想着上网问问。
Figo Chen的主页 Figo Chen | 初学一级 | 园豆:177
提问于:2009-01-16 14:30
< >
分享
最佳答案
0

ToCharArray会做一个复制内部char数组的操作,但是和装箱/拆箱无关。

地狱门神 | 菜鸟二级 |园豆:240 | 2009-01-16 22:56
其他回答(5)
0

应该不会拆箱,因为没有必要!

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-16 14:47
0

ToCharArray(); 内部实现是一个 char[] 数组的拷贝

建立一个char数组 然后指针跑来跑去啊, 就晕了.   ^_^

唔,String内部维护了第一个字符的一个变量, 以这个变量地址开始,然后指针一路++下去

那么可以得到, 内部应该是一个char数组.  ToCharArray() 以及这个函数的一些其他重载, 可以理解为在cha[] 之间玩的.

呃, 在这函数中,还是新建了一个char[]的  -.- 这算什么呢...

Astral.Road | 园豆:345 (菜鸟二级) | 2009-01-16 15:19
0

char[]是引用类型,哪来的装箱拆箱

Gray Zhang | 园豆:17610 (专家六级) | 2009-01-16 19:02
0

如果概念模糊的话,不如把你自己想到的多个解决方案都实验一下,事实胜于雄辩,呵呵。

陛下 | 园豆:3938 (老鸟四级) | 2009-01-16 21:25
0

不会

装箱拆箱只在引用类型和值类型之间转换时发生

Code
class Program
{
static void Main(string[] args)
{
string str = "hello world!";
char[] chars = str.ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
Console.WriteLine(chars[i].ToString());
}
}
}

 

从生产IL中可以看出没有进行装箱拆箱

oec2003 | 园豆:945 (小虾三级) | 2009-01-16 22:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册