2011-10-05 55 views
0

我收到一個錯誤從下面的代碼中使用未分配的局部變量'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"); 
     } 
    } 

任何想法我做錯了嗎?

+0

您在這裏要做什麼?不僅'multidimensional'永遠不會被分配,它也永遠不會被讀取。 – Dani

+0

您是否試圖創建一個多維數組,每行有一行,每行上有一列?這就是它*看起來像你想要做的,但很難確定。 –

回答

2
string[,] multidimensional; 

應該是:

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

和遷出的for循環,也許發送到方法,緩存,什麼

+0

+1 to **移出'for'循環**。 – user7116

2

你只是定義所謂的「多維」的數組,但沒有分配給任何東西。

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

但是,我不確定我是否遵循你在最內層循環中試圖做的事情。每次循環訪問數據中的元素時,都會定義一個名爲'multidimensional'的新數組,每次舊數據都會丟失。

如果'multidimensional'假設包含整個文件的內容,您需要在第一個循環之外定義它,但要像使用數組那樣使用數組,您需要知道文件中的行數。如果您使用的是C#2或更高版本,則列表<>將是更好的選擇

var list = new List<String[]>(); 

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