C#自定义方法从dataset读到数组总提示未将对象引用设置到对象的实例 貌似是初始化的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#自定义方法从dataset读到数组总提示未将对象引用设置到对象的实例 貌似是初始化的问题相关的知识,希望对你有一定的参考价值。

public static int[] GetQID(DataSet dataset_source)

DataRow dr=null;
int[] num=null;
for (int i = 0; i < dataset_source.Tables[0].Rows.Count; i++)

dr = dataset_source.Tables[0].Rows[i];
num[i] = GetSafeData.ValidateDataRow_N(dr,"qID");

return num;

通过getsafedata可以返回列名为qID的在整数数据行,在调试中该函数可以返回正确的值但到了赋值给num[i]时出现了这个报错
int[] num=null实例化这句是不是有问题?

在声明int[] num 时,没有指明数组的大小,再后来你就直接赋值了,也没有指明大小,在for 语句中,你可以先实例化数组,指明大小,如:
int a=dataset_source.tables[0].Rows.count;
num=new int[a];
出现这种问题一般是没有实例化对象造成的。
参考技术A 变量初始化有问题,缺少判断,没有处理DataSet可能为空等情况,也没有必要专门写一个返回DataRow的方法,直接取第几列的数据就是了,写了个例子在下面,希望对你有帮助:
public static int[] GetQID(DataSet ds)

List<int> results=new List<int>;
if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0)
foreach(DataRow dr in ds.Tables[0].Rows)
results.Add(Convert.ToInt32(dr[index])) //index指示你要取的是第几列,改成你要的数字
return results.ToArray();

有疑问请追问或是Hi
参考技术B num =GetSafeData.ValidateDataRow_N(dr,"qID");
而不是num[i]

以上是关于C#自定义方法从dataset读到数组总提示未将对象引用设置到对象的实例 貌似是初始化的问题的主要内容,如果未能解决你的问题,请参考以下文章

c# 中,如何读取XML文件,并将读取到的内容显示到TreeView中

在c语言中自定义了一个函数,在main中调用时提示找不到标识符,怎么办?

C#中,StreamReader如何自定义从某一行读取文字?就是假设x里存有一有效的整数,就读x行。

未找到结果时如何从 Mongoose Find 查询返回自定义消息而不是空数组

C#编写用户自定义控件时,引用web的webservice,提示错误

C# 使用自定义的泛型函数/方法对泛型数组进行四则运算