在c#中添加到列表时出现IP地址异常

本文关键字:IP 地址 异常 列表 添加 | 更新日期: 2023-09-27 18:01:36

我正试图从文本文件中读取一组ip并将其添加到IPAddress类型列表中。在"listIPAdrrs.Add(IPAddress.Parse(list[i]));"这一行会引发异常。

例外是

指定的IP地址无效。

      List<string> list = new List<string>();
        string text = System.IO.File.ReadAllText(@"D:'ips.txt");
        String[] str = text.Split(''n');
        for (int j = 0; j < str.Length; j++)
        {
            list.Add(str[j]);
        }
        List<IPAddress> listIPAdrrs = new List<IPAddress>();
        for (int i = 0; i < list.Count; i++)
        {
             //Console.WriteLine(list[i]);
            listIPAdrrs.Add(IPAddress.Parse(list[i]));
        }

在c#中添加到列表时出现IP地址异常

您试图添加一个不是IP地址的值。

我建议使用TryParse。然后,如果函数返回false,您就知道存在无效值,并且可以显示显示无效值的消息。

问题是行结尾不一定只是'n(在Windows上,很可能是'r'n),并且'r字符后面的IP地址不被IPAddress.Parse认为是有效的IP地址。

幸运的是,开发CLR的人考虑了这一切,得到了一些相当健壮的代码,所以我们将使用File.ReadAllLines来代替。

List<string> list = new List<string>(System.IO.File.ReadAllLines(@"D:'ips.txt"));
List<IPAddress> listIPAdrrs = new List<IPAddress>();
for (int i = 0; i < list.Count; i++)
{
    //Console.WriteLine(list[i]);
    listIPAdrrs.Add(IPAddress.Parse(list[i]));
}

如果这是你的事情,你也可以使用LINQ使它更短(虽然你失去了使用TryParse做这件事的能力):

List<IPAddress> listIPAdrrs = System.IO.File.ReadAllLines(@"D:'ips.txt")
    .Select(line => IPAddress.Parse(line))
    .ToList();