2015-10-03 6 views
6

Ich versuche, IP-Adresse uint zu konvertieren:System.Net.IPAddress.Address' ist veraltet

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

Und bekam diese Warnung:

'System.Net.IPAddress.Address' ist veraltet: 'Diese Eigenschaft wurde veraltet. Es ist Adresse Familie abhängig. Verwenden Sie die Methode IPAddress.Equals, um Vergleiche durchzuführen.

Was bedeutet es und sollte ich einen anderen Weg verwenden, um das zu tun?

+0

Welche Bibliotheken haben Sie importiert? –

+2

IPv6-Adresse passt nicht zu 'uint'. – PetSerAl

+0

Mögliches Duplikat von [Wie parst du eine IP-Adress-Zeichenfolge in C# auf einen Uint-Wert?] (Http://stackoverflow.com/questions/36831/how-do-you-parse-an-ip-address-string- to-a-uint-Wert-in-c) –

Antwort

5

Die Verwarnungswarnung weist Sie darauf hin, dass bei der nächsten Aktualisierung Ihrer Bibliothek, die IPAddress definiert ist, IPAddress.Address nicht mehr als Eigenschaft verfügt. Daher wird der Code nach der nächsten Aktualisierung der Bibliothek nicht kompiliert.

Wenn Sie zu der Dokumentation für IPAddress.Address gehen, stellt es fest, dass die Eigenschaft veraltet ist und stattdessen IPAddress.GetAddressBytes verwenden sollte.

Die deprecation von IPAddress.Address ist auf die Einführung von IPv6 durch die 128 Bits ist, während C# long Typ, der eigentlich ein System.Int64, nur 64 Bit beträgt.

+0

Also ist es besser mit IPAddress.GetAddressBytes, was ist, wenn ich eine IPv^-Adresse habe? –

+0

Ich meine IPv6 .... –

+0

'IPAddress.GetAddressBytes' returnes' bytes [] ', so dass es IP-Adresse v4 und v6 und möglicherweise nächste Iterationen unterstützt, obwohl das für einige Zeit nicht wahrscheinlich ist. –