2008-12-12 13 views
7

C'è un modo per dire qualcosa del tipo:C'è un modo semplice per determinare la dimensione del tipo in C#?

sizeof (type)? O tipo. Dimensione?

in questo momento sto cercando di utilizzare un codice simile:

if (type.Equals(typeof(int))) 
    return sizeof(int); 
else if (type.Equals(typeof(long))) 
    return sizeof(long); 

ecc, ecc, per ogni singolo tipo di dati.

Ci deve essere una soluzione più pulita, no?

+0

Puoi spiegare una ragione dietro quello che vuoi fare? – leppie

+0

Questo è divertente, ho quasi postato questa domanda esatta ieri, ma non ho avuto tempo. Ho bisogno della stessa identica cosa per usare DbParameters ADO.NET. A volte ti costringe a impostare DbParameter.Size, che è la dimensione dell'oggetto in byte. Anch'io ho avuto una grande affermazione di switch come quella che hai postato in origine :) – CodingWithSpike

risposta

13
+0

Sembra che abbia la dimensione, in memoria, di un oggetto o valore specifico, che non è necessariamente uguale alla dimensione di un tipo. –

+0

C'è anche un sovraccarico di tipo. Ho erroneamente collegato alla versione dell'oggetto. Aggiornamento a breve – JaredPar

+0

Ancora, dal doc: "La dimensione restituita è effettivamente la dimensione del tipo non gestito. Le dimensioni non gestite e gestite di un oggetto possono essere diverse. Per i tipi di caratteri, la dimensione è influenzata dal valore Charset impostato a quella classe. " A seconda di quale sia il caso d'uso, potrebbe essere fuorviante. –

1

Se questo è per l'accesso ai dati, si può fare type.GetTypeCode() (che è un membro del IConvertible), che ti dà un bel enum a accendere.

-4

Forse puoi andare Convert.ToString(type.MaxValue, 2).Length/8 ?

Problemi correlati