"System.Net.IPAddress.Address"已经过时。

6

我试图将IP地址转换为uint

IPAddress requstedIpAddress;
uint requesteIpAddressUint = (uint)IPAddress.Parse(requstedIpAddress.ToString()).Address;

我收到了下面这个警告:

'System.Net.IPAddress.Address' 已过时:'该属性已被弃用。它依赖于地址族。请使用IPAddress.Equals方法执行比较。

这是什么意思,我应该使用其他方式来完成任务吗?


你导入了哪些库? - sujith karivelil
2
IPv6地址不适合于uint - user4003407
可能是重复的问题,参考如何在C#中将IP地址字符串解析为uint值? - Mike Hixson
1
这应该会给你与上面相同的结果,而不会出现警告: uint requesteIpAddressUint = BitConverter.ToUInt32(requstedIpAddress.GetAddressBytes(),0);尽管它只适用于IPv4。 - Declan Carroll
哈哈,然而我们现在已经过了8年,仍然面对着这个错误信息!也许下一个版本会解决呢?;) - Jeff Patton
1个回答

6
警告信息告诉您,在下一个定义了IPAddress的库更新中,将不再使用IPAddress.Address属性。因此,在库的下一个更新之后,您的代码将无法编译。如果您查看IPAddress.Address文档,它会提示该属性已过时,并应改用IPAddress.GetAddressBytes代替。由于采用了128位的IPv6,而C#类型long实际上是只有64位的System.Int64,因此IPAddress.Address被弃用。

所以最好使用IPAddress.GetAddressBytes,那如果我有一个IPv6地址呢? - mark yer
IPAddress.GetAddressBytes 返回 bytes[],以支持 IP 地址 v4 和 v6,可能还包括未来的迭代,尽管这在一段时间内不太可能发生。 - Nadir Muzaffar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接