Warum verwendet IPAddress-Konstruktor Int64 anstelle von UInt32?

8

Warum nimmt IPAddress Konstruktor Int64 statt UInt32 ? Gemäß Reflector wird die Adresse als Int64 intern gespeichert ( m_Address ) und der Konstruktor validiert, dass sie innerhalb des für UInt32 gültigen Bereichs liegt. Ich bin nur neugierig, warum es Int64 und nicht UInt32 verwendet.

Und bevor jemand IPv6 sagt .. IPv6 ist größer als Int64 und wird als ein Array von UInt16 gespeichert. Der Int64 -Konstruktor wird nur zum Generieren von IPv4-Adressen verwendet.

    
Samuel Neff 05.02.2010, 21:20
quelle

1 Antwort

12

Wahrscheinlich, weil in der Common Language Specification (CLS) der Common Language Infrastructure (CLI ) Standard-Typen ohne Vorzeichen müssen nicht von einer Sprache unterstützt werden, daher verwendeten sie den kleinsten Typ mit Vorzeichen, der alle möglichen vorzeichenlosen Werte enthält.

  

Die .NET Framework-Klassenbibliothek enthält Typen, die den primitiven Datentypen entsprechen, die Compiler verwenden. Von diesen Typen sind folgende CLS-konform: Byte , Int16 , Int32 , Int64 , Single , Double , Boolean , Char , Decimal , IntPtr und String .

    
Michael Burr 05.02.2010, 21:25
quelle

Tags und Links