【问题标题】:IndexOutOfRange Exception C# Multi-Dimensional Array [duplicate]IndexOutOfRange 异常 C# 多维数组 [重复]
【发布时间】:2015-04-11 05:40:50
【问题描述】:
string[,] Months = new string[12,2] { { "Jan", "1" }, { "Feb", "2" }, { "Mar", "3" }, { "Apr", "4" }, { "May", "5" }, { "Jun", "6" }, { "Jul", "7" }, { "Aug", "8" }, { "Sep", "9" }, { "Oct", "10" }, { "Nov", "11" }, { "Dec", "12" } };

for (int i = 0; i < Months.Length; i++)
{
    if (Convert.ToInt32(Months[i,1]) > DateTime.Now.Month)
    {
        //Do Something
    }
    else
    {
        //Another Task
    }
}

上面的代码抛出一个超出“范围异常”的索引。但是,当我在 for 循环中手动插入数组的长度时,一切正常

for (int i = 0; i < 12; i++)
{
    if (Convert.ToInt32(Months[i,1]) > DateTime.Now.Month)
    {
        //Do Something
    }
    else
    {
        //Another Task
    }
}

是什么导致了这个异常?我已经使用类似的代码很长时间了,没有问题。今天早上刚写了这个,遇到红屏了。

【问题讨论】:

  • 调试时检查 Months.Length 的值
  • Length property 返回数组所有维度的元素总数
  • 谢谢。很有帮助

标签: c# asp.net-mvc


【解决方案1】:
for (int i = Months.GetLowerBound(0); i <= Months.GetUpperBound(0); i++)

【讨论】:

    【解决方案2】:
    for (int i = 0; i < Months.GetLength(0); i++)
    

    长度是指数组中所有元素的大小,为24。获取一维的大小,使用GetLength()

    【讨论】:

    • 谢谢@phuongNguyen。我一开始并不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2018-05-07
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多