有关.net数组问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 10:26:50
/// <summary>
/// 保存新闻类别到数组
/// </summary>
/// <returns></returns>
public string [] getType()
{
string [] typeInfo = null;
DataProc dp = new DataProc();
SqlDataReader reader = dp.getNewsType();
if(reader.Read())
{
typeInfo = new string[2];
int i = int.Parse(reader["typeId"].ToString());
typeInfo[i] = reader["typeName"].ToString();
}
return typeInfo;
}
这样用数组 是不是 对的。 .

不正确,有两点原因.
其一:if(reader.Read())如果条件一开始就为假,则根本不会执行IF块内的代码,return typeInfo;将会报错.
其二:i的值楼主可以确定是从0开始么?如果typeid是大于1的数字,将报错.如果为1则引用typeInfo[0]时会报错...
建议改为:
typeInfo = new string[2];
int i=0;
while(reader.Read())
{
typeinfo[i]=reader["typeName"].ToString();
i++
}
这样子程序出错的几率就小很多了.还有要注意的是i值应小于1

个人觉得,C#里用ArrayList更方便,在定义时根本不用担心数组长度,维度和类型,符合.NET Freamwork口味,而且在垃圾回收机制里优先权比较高.

这样是不对地
没有循环数组就失去意义了