2017-06-15 6 views
-2

Hallo Stackoverflow-Leute!C# Index außerhalb des Bereichs - Array ohne Inhalt

Ich mache ein Schulprojekt und habe derzeit das ganze Programm funktioniert, aber ich möchte es ausfallsicher machen, aber ich habe Probleme, dass ein Array außerhalb der Reichweite geht, wenn ich nur ENTER drücke, anstatt irgendwas zu setzen info in.

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(); 
     } 

ich habe versucht, mit == null mit ipAndSubnetArray Festsetzung aber das schien nicht den Trick zu tun. Irgendwelche Vorschläge? Wenn Sie mehr Code benötigen, lassen Sie es mich wissen.

+4

prüfen für null oder eine 0 Länge FIRST – TheGeekYouNeed

+0

Was sie sagten ^^ –

+0

Haben Sie den Code zu debuggen, versucht ein, warum nicht er? – Gusman

Antwort

1

Ich gehe davon aus, dass Daten von einem Terminal oder einem anderen Eingang kommen, wenn Sie die Eingabetaste drücken und über ipAndSubnetArray übergeben werden. ipAndSubnetArray ist anscheinend null wenn dies passiert. Ihre Überprüfung dafür ist am Ende, verschieben Sie es nach oben, um den Zugriff auf alle Indizes zu verhindern, die nicht vorhanden sind.

Der ipAndSubnetArray.Length >= 2 Scheck ist zu garantieren, dass Sie auf ipAndSubnetArray[1] zugreifen können. Du könntest das auch drinnen so machen 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() 
} 
+0

Super, das funktioniert dank! : D – NiceDevelopmentq

+0

Großartig. Wenn es funktioniert, akzeptiere die Antwort, damit andere sehen, dass die Frage beantwortet wird. – bastijn

Verwandte Themen