2015-10-03 10 views
6

Я пытаюсь преобразовать IP-адрес в uint:System.Net.IPAddress.Address' устарела

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

И получил это предупреждение:

'System.Net.IPAddress.Address' является устаревшее: «Это свойство было устарело. Он зависит от семейства адресов. Используйте метод IPAddress.Equals для выполнения сравнений.

Что это значит и должен ли я использовать какой-либо другой способ сделать это?

+0

все библиотеки, которые вы импортировали? –

+2

Адрес IPv6 не подходит для 'uint'. – PetSerAl

+0

Возможный дубликат [Как вы разбираете строку IP-адреса в значение uint в C#?] (Http://stackoverflow.com/questions/36831/how-do-you-parse-an-ip-address-string- to-a-uint-value-in-c) –

ответ

5

Предупреждение об устаревании сообщает, что в следующем обновлении вашей библиотеки, которое определено IPAddress, больше не будет иметь IPAddress.Address как собственность. Таким образом, ваш код не сможет скомпилироваться после следующего обновления библиотеки.

Если вы перейдете к документации по номеру IPAddress.Address, он отмечает, что имущество устарело и вместо этого должно использовать IPAddress.GetAddressBytes.

устаревания из IPAddress.Address связано с принятием IPv6, который является 128 битов, а на C# тип long, который на самом деле System.Int64, составляет всего 64 бита.

+0

Так что лучше использовать IPAddress.GetAddressBytes, а как насчет того, есть ли у меня IPv адрес? –

+0

Я имею в виду IPv6 .... –

+0

'IPAddress.GetAddressBytes' возвращает байты []', так что он может поддерживать IP-адрес v4 и v6 и, возможно, следующие итерации, хотя это маловероятно в течение некоторого времени. –

Смежные вопросы