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.
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
undString
.