0

看看我被文本框的 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 进行比较的另一种方法。请帮忙。

4

3 回答 3

3

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

int ipclass;
if (!int.TryParse(parts[0], out ipclass))
{
    //do nothing
}
于 2013-05-25T12:52:16.300 回答
1

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

于 2013-05-25T13:07:50.687 回答
0

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

于 2013-05-25T12:53:17.227 回答