hellofenny 2013-12-11 15:16 采纳率: 0%
浏览 1232

求大神,为什麽出现subscript out of range

moer = Array.CreateInstance(typeof(double), 5);

        if (yhsjxz.Rows[0]["cygsyxs"] != "")
        {
            double gsyxs = double.Parse(yhsjxz.Rows[0]["cygsyxs"].ToString());
            moer.SetValue(gsyxs, 0);
        }
        moer.SetValue(1, 1);
        fzqzl1 = double.Parse(yhsjxz.Rows[0]["fzqzl"].ToString()) * 9.8;
        moer.SetValue(fzqzl1, 2);

为什麽会出现subscript out of range

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 15:11
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在C#中,Array.CreateInstance方法用于创建一个新的数组,并且可以指定其大小。当尝试使用索引访问这个新创建的数组时,如果数组没有足够的空间来容纳这些新的元素,就会发生SubscriptOutOfRange异常。

    例如,在你提供的示例中,moer.SetValue(gsyxs, 0)试图将一个double类型的值赋给数组的第一个元素,但数组只有一个元素(即0),所以它会抛出SubscriptOutOfRange异常。

    要避免这种情况,你需要确保你的数组有足够的空间来容纳所有预期的元素。你可以通过检查数组是否已满来确定这一点。如果你知道数组的最大容量,你可以设置Array.CreateInstance的方法参数来限制数组的大小:

    int maxCapacity = 10; // 假设最大容量是10个元素
    var moer = new double[maxCapacity];
    ...
    

    或者,如果你知道数组的大小,也可以这样做:

    int size = 5; // 假设数组有5个元素
    var moer = new double[size];
    ...
    

    这样,无论何时尝试使用索引访问数组,都会确保有足够的空间来容纳预期的元素。

    评论

报告相同问题?