首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataRow抛出NullReferenceException

DataRow抛出NullReferenceException
EN

Stack Overflow用户
提问于 2012-08-15 03:08:00
回答 3查看 933关注 0票数 0

这是我的代码:

代码语言:javascript
复制
 private string[] quizList;

 public string[] getQuizList() 
 {    
     Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta = new Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter();
     Databases.MoodleOCDataSet.QuizDataTable table = new Databases.MoodleOCDataSet.QuizDataTable();
     ta.Fill(table);

     System.Data.DataRow[] row = table.Select("id > 0");

     for(int i = 0; i < row.Length; i++)    
         quizList[i] = row[i].ItemArray[2].ToString();

     return quizList;
 }

当我在调试时,我可以看到表中填充了数据,行中也填充了数据。但是当涉及到for循环时,它总是抛出空引用异常。我的代码出了什么问题?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-15 03:11:22

在方法内部初始化quizList

代码语言:javascript
复制
quizList = new string[row.Length];

然后运行循环。

在循环内部,quizList为null,并且您正在尝试访问它的索引。

所以你的函数应该是这样的

代码语言:javascript
复制
 private string[] quizList;

 public string[] getQuizList() 
 {    
     Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta = new Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter();
     Databases.MoodleOCDataSet.QuizDataTable table = new Databases.MoodleOCDataSet.QuizDataTable();
     ta.Fill(table);

     System.Data.DataRow[] row = table.Select("id > 0");

     quizList = new string[row.Length];

     for(int i = 0; i < row.Length; i++)    
         quizList[i] = row[i].ItemArray[2].ToString();

     return quizList;
 }
票数 3
EN

Stack Overflow用户

发布于 2012-08-15 03:10:11

这意味着quizList为空。

票数 0
EN

Stack Overflow用户

发布于 2012-08-15 03:12:49

您正在尝试在初始化quizList之前访问它的索引。试着这样做:

代码语言:javascript
复制
quizList = new String[row.length];

在你使用它之前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11959112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档