【问题标题】:use unassigned local variable 'multidimension'使用未分配的局部变量“多维”
【发布时间】:2011-10-05 23:44:41
【问题描述】:

我从下面的代码中收到一个错误use unassigned local variable '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");
        } 
    }

任何想法我做错了什么?

【问题讨论】:

  • 你想在这里做什么?不仅multidimensional 从未被分配,它也从未被读取。
  • 您是否尝试创建一个多维数组,每行一行,一行上的每个值一列?这就是你想要做的看起来,但很难确定。

标签: c# multidimensional-array unassigned-variable


【解决方案1】:
string[,] multidimensional;

应该是:

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

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

【讨论】:

    【解决方案2】:

    您只是定义了一个名为“多维”的数组,但没有将它分配给任何东西。

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

    但是,我不确定我是否在遵循您在最内层循环中尝试执行的操作。每次循环遍历 data 中的元素时,您都在定义一个名为“多维”的新数组,并且每次都会丢失旧数据。

    如果假设“多维”包含整个文件的内容,您需要在第一个循环之外定义它,但是要像您一样使用数组,您需要知道文件中的行数。如果您使用 C#2 或更高版本,List 会是更好的选择

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

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 2015-11-09
      • 2012-05-18
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多