C# DataRow引发NullReferenceException

C# DataRow引发NullReferenceException,c#,dataset,C#,Dataset,这是我的代码: private string[] quizList; public string[] getQuizList() { Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta = new Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter(); Databases.MoodleOCDataSet.QuizDataTable

这是我的代码:

 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;
 }
private string[]quizList;
公共字符串[]getQuizList()
{    
Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta=新数据库。MoodleOCDataSetTableAdapters.QuizTableAdapter();
Databases.MoodleOCDataSet.QuizDataTable=新数据库.MoodleOCDataSet.QuizDataTable();
ta.填写(表格);
System.Data.DataRow[]行=表。选择(“id>0”);
for(int i=0;i

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

这意味着
quizList
为空。

这意味着
quizList
为空。

内部方法初始化
quizList

quizList = new string[row.Length];
然后运行循环

Inside loop quizList为null,您正在尝试访问它的索引

所以你的函数应该是

 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;
 }
private string[]quizList;
公共字符串[]getQuizList()
{    
Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta=新数据库。MoodleOCDataSetTableAdapters.QuizTableAdapter();
Databases.MoodleOCDataSet.QuizDataTable=新数据库.MoodleOCDataSet.QuizDataTable();
ta.填写(表格);
System.Data.DataRow[]行=表。选择(“id>0”);
quizList=新字符串[row.Length];
for(int i=0;i
内部方法初始化
quizList

quizList = new string[row.Length];
然后运行循环

Inside loop quizList为null,您正在尝试访问它的索引

所以你的函数应该是

 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;
 }
private string[]quizList;
公共字符串[]getQuizList()
{    
Databases.MoodleOCDataSetTableAdapters.QuizTableAdapter ta=新数据库。MoodleOCDataSetTableAdapters.QuizTableAdapter();
Databases.MoodleOCDataSet.QuizDataTable=新数据库.MoodleOCDataSet.QuizDataTable();
ta.填写(表格);
System.Data.DataRow[]行=表。选择(“id>0”);
quizList=新字符串[row.Length];
for(int i=0;i
您正在尝试在初始化quizList之前访问它的索引。尝试这样做:

quizList = new String[row.length];

在使用它之前。

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

quizList = new String[row.length];

使用前。

您确定每行有三件物品吗?@Oded是的,我确定。项目包括id、课程和名称。在调试窗口中还显示了3项。您在方法之外声明
quizList
的任何原因?另外,您为什么不通过列名称(如
行[i][“name”])获取单元格值。ToString()
?@bang谢谢您的想法。您确定每行有三个项目吗?@Oded是的,我确定。项目包括id、课程和名称。在调试窗口中还显示了3项。您在方法之外声明
quizList
的任何原因?还有,为什么不通过列名获取单元格值,比如
行[i][“name”]。ToString()
?@bang谢谢你的想法。