2016-10-29 136 views
2

警告CS0618:'IPAddress.Address'已過時:'此屬性已被棄用 。這是地址系列依賴。請使用 IPAddress.Equals方法執行比較。警告CS0618:'IPAddress.Address'已過時:'此屬性已被棄用

將IP地址的八進制表示轉換爲無符號整數(包含在long中)。

public static long CastIp(string ip) 
{ 
    return (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse(ip).Address); 
} 

它給了我這個警告;在上面的代碼中,如果沒有IPAddress,我會做什麼來完成同樣的事情?

+0

你是用什麼「長」的?你爲什麼要將數字轉換爲主機順序?你爲什麼忽略IPv6? – Luaan

回答

3

documentationIPAddress.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); 
} 

這似乎給出相同的結果,在測試中,我已經嘗試了...你應該檢查它,你想要做雖然什麼,因爲它不清楚你的期望。

+0

謝謝,這很好:) – MLBdev

相關問題