2010-02-05 12 views
8

Perché il costruttore IPAddress richiede Int64 anziché UInt32? Secondo Reflector, l'indirizzo viene memorizzato come Int64 internamente (m_Address) e il costruttore lo convalida all'interno dell'intervallo valido per UInt32. Quindi sono curioso di sapere perché utilizza Int64 e non UInt32.Perché il costruttore IPAddress accetta Int64 anziché UInt32?

E prima che qualcuno dica IPv6 .. IPv6 è più grande di Int64 e viene memorizzato come un array di UInt16. Il costruttore viene utilizzato solo per generare indirizzi IPv4.

risposta

12

Probabilmente poiché nello standard Common Language Specification (CLS) dello standard Common Language Infrastructure (CLI), non è necessario che i tipi non firmati siano supportati da una lingua in modo che utilizzino il tipo di firma più piccolo che includerà tutti i valori non firmati possibili.

La libreria di classi .NET Framework include tipi corrispondenti ai tipi di dati primitivi utilizzati dai compilatori. Di questi tipi, i seguenti sono CLS-compliant: Byte, Int16, Int32, Int64, Single, Double, Boolean, Char, Decimal, IntPtr e String.

Problemi correlati