2013-05-25 80 views
0

看看這個代碼,我通過一個文本框的TextChanged事件包圍:無法比較int?爲null

 string testString = comboIPAddress.Text; 
     string[] parts = testString.Split('.'); 
     int? ipclass = int.Parse(parts[0]); 
     if (ipclass == null) 
     { 
      //do nothing 
     } 

     if (ipclass >= 1 && ipclass <= 126) 
     { 
      comboSubnet.Text = "255.0.0.0"; 
     } 
     if (ipclass >= 192 && ipclass <= 223) 
     { 
      comboSubnet.Text = "255.255.255.0"; 
     } 
     if (ipclass >= 128 && ipclass <= 191) 
     { 
      comboSubnet.Text = "255.255.0.0"; 
     } 
     else 
     { 
      comboSubnet.Text = ""; 
     } 

當執行EXE如果我刪除一切從ip地址組合框,它是給錯誤(輸入字符串是不是在正確的格式)。我不知道另一種方式來比較一個int爲null。請幫忙。

+0

如果'testString'爲空,'parts'的內容是什麼? –

+1

您應該閱讀:http://msdn.microsoft.com/en-us/library/b3h1hf19.aspx –

回答

3

使用非空的int並檢查是否可解析與int.TryParse() ...

int ipclass; 
if (!int.TryParse(parts[0], out ipclass)) 
{ 
    //do nothing 
} 
+0

它只需要複製和粘貼。謝謝你 –

+0

不客氣:) – davmos

0

你應該試圖分裂它之前測試if(!string.IsNullOrEmpty(testString)),其次是int.TryParse

1

有您使用的一個MaskedTextBox中考慮IP?然後,您可以使用 輕鬆解析輸入,如SO answer中所示。