无法比较int?为空

时间:2013-05-25 12:50:03

标签: c# visual-studio

查看我用文本框的textchanged事件包围的代码:

        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 = "";
        }

当我从IPAddress组合框中删除所有内容时执行exe,它会给出错误(输入字符串的格式不正确。)。我不知道将int与null进行比较的另一种方法。请帮忙。

3 个答案:

答案 0 :(得分:3)

使用不可为空的int并检查是否可以int.TryParse()解析...

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

答案 1 :(得分:1)

您是否考虑过使用MaskedTextBox作为IP?然后,您可以使用System.Net.IPAddress Parse method轻松解析输入 如SO answer所示。

答案 2 :(得分:0)

在尝试拆分之前,您应该先测试if(!string.IsNullOrEmpty(testString)),然后再调整int.TryParse