使用未分配的局部变量’multidimension’

我从下面的代码中使用未分配的局部变量’multidimension’得到错误。 我试图将文本文件中返回的数据放在一个多维数组中,方法是将它们拆分并将每一行放入数组中

private void button1_Click_1(object sender, EventArgs e) { string[,] Lines; //string[][] StringArray = null; //to get the browsed file and get sure it is not curropted try { DialogResult result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { using (StreamReader sr = new StreamReader(openFileDialog1.FileName)) { string[] data= null; string ReadFromReadLine; while ((ReadFromReadLine = sr.ReadLine()) != null) { data = ReadFromReadLine.Split(','); for (int i = 0; i <= ReadFromReadLine.Length; i++) { for (int j = 0; j <= data.Length; j++ ) { string[,] multidimensional; multidimensional[i, j] = data[j]; } } } //foreach(string s in Lines) //{ // EditItemComboBox.Items.Add(s); //} } FilePath.Text = openFileDialog1.FileName; //textBox1.Text += (string)File.ReadAllText(FilePath.Text); } } catch(IOException ex) { MessageBox.Show("there is an error" + ex+ "in the file please try again"); } } 

任何想法我做错了什么?

 string[,] multidimensional; 

应该:

 string[,] multidimensional = new string[ReadFromReadLine.Length, data.Length]; 

并移出for循环,可能会发送到方法,缓存或其他东西

您只是定义一个名为“multidimensional”的数组,但不会将其分配给任何内容。

 for (int j = 0; j <= data.Length; j++ ) { string[,] multidimensional = new String[i,data.Length] multidimensional[i, j] = data[j]; } 

但是,我不确定我是否遵循了你在最里面的循环中想要做的事情。 每次循环遍历数据中的元素时,您都会定义一个名为“multidimensional”的新数组,并且每次都会丢失旧数据。

如果'multidimensional'被认为包含整个文件的内容,则需要在第一个循环之外定义它,但是要像使用数组那样使用数组,您需要知道文件中的行数。 如果您使用的是C#2或更高版本,则List <>将是更好的选择

 var list = new List(); while ((ReadFromReadLine = sr.ReadLine()) != null) { data = ReadFromReadLine.Split(','); list.Add(data); }