为什么我的#34;参数超出了范围异常"?

时间:2014-10-30 13:39:48

标签: c# arrays string outofrangeexception

我尝试了以下代码。我不明白为什么我继续争取一个超出范围的论点"异常。

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;
    }
}

3 个答案:

答案 0 :(得分:8)

Substring的第二个参数是长度,而不是结束索引。如果你想从45开始尝试3个字符,请尝试

string newString = fileData.Substring(45, 3);

答案 1 :(得分:1)

你的问题有点含糊不清,但我猜它是由你的Substring方法造成的。如果您的任何一个值大于字符串的长度,则会抛出ArgumentOutOfRangeException

答案 2 :(得分:0)

这是因为你在fileData的索引45处进行了一个长度为48的子字符串,并不能保证fileData足够长。要安全地执行此操作,您需要检查fileData的长度是否至少为93个字符。