我想存储在我的字符串数组中选择的文件名。
代码:
if (openFileDialog.ShowDialog() == DialogResult.OK)
string filename ;
string[] result = null;
int i = 0;
try {
if ((myStream = openFileDialog.OpenFile()) != null)
{
foreach (String file in openFileDialog.FileNames)
{
filename = Path.GetFileName(file);
result[i] = filename;
MessageBox.Show(result[i]); // only show the name of file
i = i + 1;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
错误代码是:“索引超出了数组”
我该如何解决?
答案 0 :(得分:3)
如果您事先知道要添加多少项,则应该只使用数组。您应该使用列表,以便始终可以添加额外的内容。因为你从来没有定义数组的大小,所以你会得到错误。
如果你动态地添加内容,你应该使用列表。
List<string> result = new List<string>();
添加时
result.add(filename);
显示
MessageBox.Show(result[i])
所以你的代码将是
if (openFileDialog.ShowDialog() == DialogResult.OK)
string filename ;
List<string> result = new List<string>();
int i = 0;
try {
if ((myStream = openFileDialog.OpenFile()) != null)
{
foreach (String file in openFileDialog.FileNames)
{
filename = Path.GetFileName(file);
result.add(filename);
MessageBox.Show(result[i]); // only show the name of file
i = i + 1;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
答案 1 :(得分:0)
您无法使用string[] result = null;
如果您将此更改为string[] result = new string[3];
,那么您的解决方案将正常运行,但这不是正确的方法,而是使用List<String>
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filename;
List<string> result = new List<string>();
int i = 0;
try
{
if ((myStream = openFileDialog.OpenFile()) != null)
{
foreach (String file in openFileDialog.FileNames)
{
filename = Path.GetFileName(file);
result.Add(filename);
MessageBox.Show(result[i]); // only show the name of file
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}