警告CS0618:';IPAddress.Address';已过时:';此属性已被弃用
本文关键字:属性 Address CS0618 IPAddress 警告 过时 | 更新日期: 2023-09-27 18:15:25
警告CS0618:"IPAddress.Address"已过时:"此属性具有已被弃用。这是地址家庭依赖。请使用IPAddress.Equals方法执行比较。
将IP地址的八进制表示形式转换为无符号整数(包含在长整型中(。
public static long CastIp(string ip)
{
return (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse(ip).Address);
}
它给了我这个警告;如果上面的代码中没有IPAddress,我该怎么做才能完成同样的事情?
IPAddress.Address
的文档中写道:
此属性已过时。使用GetAddressBytes。
所以我建议你这样做:
public static long CastIp(string ip)
{
IPAddress address = IPAddress.Parse(ip);
byte[] addressBytes = address.GetAddressBytes();
// This restriction is implicit in your existing code, but
// it would currently just lose data...
if (addressBytes.Length != 4)
{
throw new ArgumentException("Must be an IPv4 address");
}
int networkOrder = BitConverter.ToInt32(addressBytes, 0);
return (uint) IPAddress.NetworkToHostOrder(networkOrder);
}
这似乎给出了相同的结果,在我尝试过的测试中。。。不过,你应该检查一下它是否正是你想要的,因为它并不清楚你到底想要什么。