我收到错误从下面的代码中使用未分配的局部变量'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 :(得分:2)
string[,] multidimensional;
应该是:
string[,] multidimensional = new string[ReadFromReadLine.Length, data.Length];
并移出for循环,可能会发送到方法,缓存或其他东西
答案 1 :(得分:2)
您只是定义一个名为“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或更高版本,则列表&lt;&gt;将是一个更好的选择
var list = new List<String[]>();
while ((ReadFromReadLine = sr.ReadLine()) != null)
{
data = ReadFromReadLine.Split(',');
list.Add(data);
}