在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]));
}
您试图添加一个不是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();