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进行修复,但似乎并没有做到这一点。有什么建议?如果您需要更多代码,请告诉我。
答案 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()
}