C#索引超出范围 - 没有内容的数组

时间:2017-06-15 19:02:50

标签: c# arrays indexing range

Hello Stackoverflow人员!

我正在制作一个学校项目并且目前整个程序正在运行,但是我想让它失败证明,但是如果我只是按ENTER键我就会遇到阵列超出范围的问题放入任何信息。

string[] strIpAddress = ipAndSubnetArray[0].Split('.');
        string[] strSubnetMask = new string[] { "" };
        int[] intSubnetMask = new int[] { };
        string strCIDR = "";
        string cidrSubnetmask = "";

        if (ipAndSubnetArray[1].Length > 2)
        {
            strSubnetMask = ipAndSubnetArray[1].Split('.');
            intSubnetMask = strArray2IntArray(strSubnetMask);
        }
        else if (ipAndSubnetArray[1].Length < 3)
        {
            strCIDR = Convert.ToString(ipAndSubnetArray[1]);
            cidrSubnetmask = cidrTilDeci(Convert.ToInt32(strCIDR));
            strSubnetMask = cidrSubnetmask.Split('.');
            intSubnetMask = strArray2IntArray(strSubnetMask);
        }
        else if (ipAndSubnetArray == null)
        {
            Main();
        }

我尝试使用ipAndSubnetArray == null进行修复,但似乎并没有做到这一点。有什么建议?如果您需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

当您按Enter键并通过ipAndSubnetArray传入时,我假设数据来自终端或其他输入。发生这种情况时ipAndSubnetArray显然是null。您对此的检查是在最后,将其移至顶部以防止访问不存在的任何索引。

ipAndSubnetArray.Length >= 2检查是为了保证您可以访问ipAndSubnetArray[1]。你也可以这样做if (ipAndSubnetArray.Length > 1 && ipAndSubnetArray[1].Length > 2)

if(ipAndSubnetArray != null && ipAndSubnetArray.Length >= 2) {
    string[] strIpAddress = ipAndSubnetArray[0].Split('.');
    string[] strSubnetMask = new string[] { "" };
    int[] intSubnetMask = new int[] { };
    string strCIDR = "";
    string cidrSubnetmask = "";

    if (ipAndSubnetArray[1].Length > 2)
    {
        strSubnetMask = ipAndSubnetArray[1].Split('.');
        intSubnetMask = strArray2IntArray(strSubnetMask);
    }
    else if (ipAndSubnetArray[1].Length < 3)
    {
        strCIDR = Convert.ToString(ipAndSubnetArray[1]);
        cidrSubnetmask = cidrTilDeci(Convert.ToInt32(strCIDR));
        strSubnetMask = cidrSubnetmask.Split('.');
        intSubnetMask = strArray2IntArray(strSubnetMask);
    }
} else {
    Main()
}