职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 2156|回复: 4

C#为字符串数组动态赋值的问题

[复制链接]
赤脚天使 发表于 2009-8-16 11:18 | 显示全部楼层 |阅读模式
今天才发现一个很简单很基本的问题
就是怎么也不能正确


方法1:
string[] a;
a[0] = \"we\";
MessageBox.Show(a[0]);
//使用了未赋值的局部变量a
方法2:
string[] a = new string[] { };
a[0] = \"we\";
MessageBox.Show(a[0]);
//可以编译通过
真正运行时显示索引超出数组界限

不要给我说应该在最上面大括号就赋值
那是个人就知道
问题刚定义的时候哪里知道值啊?值都是后来调用的时候动态赋的嘛! 问题补充:
如果想用FOR语句对数组进行操作怎么办呢?
另外
为什么类似于这样的赋值又是可行的呢?
string a=\"你好
中国\";
string[] b = new string[] { };
if (Regex.Match(a, @\"
\").Success)
{
b = a.Split('|');
}
乔峰 发表于 2009-8-16 11:18 | 显示全部楼层

C#为字符串数组动态赋值的问题


对象是需要new的
如果不new,就不知道数组的长度
如果本身是不定长的数组
可以用List等数据结构来保存
飞天小猪 发表于 2009-8-16 11:19 | 显示全部楼层

C#为字符串数组动态赋值的问题

方法2:
string[] a = new string[] { };
a[0] = "we";

你可以在方法2中声明了a数组后
a.lengh看看a有几个元素
wpq88 发表于 2009-8-16 11:19 | 显示全部楼层

C#为字符串数组动态赋值的问题

改用List<string>吧.

方法一是没有new(没有分配空间)
方法二是在new的时候没有指定大小,默认是0个元素,所以对其任意一个元素赋值都是越界.

在C#中,数组一般用来存放大小确定的数据.
如果数组大小未知,建议使用List<>.

List<string> a=new List<string>();
a.Add("we");
MessageBox.Show(a[0]);

同时,你可以用a.ToArray()来随时转换成string[].
也可以List<string> b=new List<string>(a.ToArray());将数组数据初始化进List<>
jason_dion 发表于 2009-8-16 11:19 | 显示全部楼层

C#为字符串数组动态赋值的问题

其它的都有人说了
b = a.Split(&#39;|&#39;);
个是对b重新赋值了
也就等于重新new了一个数组
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-27 19:15 , Processed in 0.137135 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表