0

これは私のコードです:

 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 ループになると、常に null 参照例外がスローされます。私のコードの何が問題なのですか? ありがとう!

4

3 に答える 3

3

内部メソッドの初期化quizList

quizList = new string[row.Length];

そしてループを実行します。

内部ループ 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;
 }
于 2012-08-14T19:11:22.497 に答える
0

初期化される前に、quizListのインデックスにアクセスしようとしています。次のようなことを試してください。

quizList = new String[row.length];

使用する前に。

于 2012-08-14T19:12:49.153 に答える
0

それquizListはnullであることを意味します。

于 2012-08-14T19:10:11.110 に答える