为什么我会得到一个“;参数超出范围异常”;

本文关键字:参数 异常 范围 一个 为什么 | 更新日期: 2023-09-27 18:28:30

我尝试了以下代码。我不明白为什么我总是得到一个"论点越界"的例外。

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的第二个参数是长度,而不是结束索引。如果您想要从45开始的3个字符,请尝试

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

您的问题有点模棱两可,但我猜这是由您的Substring方法引起的。如果其中一个值大于字符串的长度,那么就会抛出ArgumentOutOfRangeException

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