为什么我会收到“参数超出范围例外”?
问题描述:
我试了下面这段代码。我不明白为什么我继续得到一个“论证越界”的例外。为什么我会收到“参数超出范围例外”?
private void Easy_Click(object sender, EventArgs e)
{
string fileData =readFile();
if (fileData.Contains(name))
{
int i = fileData.IndexOf(name);
int easyScore = i + name.Length +1;
MessageBox.Show(fileData+" "+i);
string newString = fileData.Substring(45, 48);
Easy.Text=newString;
}
}
答
的Substring
第二个参数是index.If你想3个字符从45开始尝试
string newString = fileData.Substring(45, 3);
答
这是因为你在FILEDATA指数45做一个字符串的长度,而不是终点长度为48,不保证fileData足够长。要安全地执行此操作,您需要检查fileData长度至少为93个字符。
答
从你的问题来看,这有点含糊不清,但我想这是由你的Substring方法引起的。如果您的值中的任何一个大于字符串的长度,则已知这会引发ArgumentOutOfRangeException
。
可能你没有正确理解Substring的第二个值是什么。阅读文档 – Steve 2014-10-30 13:41:47
http://msdn.microsoft.com/en-us/library/aka44szs%28v=vs.110%29.aspx – blfuentes 2014-10-30 13:42:52
变量'name'是什么? – 2014-10-30 13:42:53