2008-12-12 6 views
7

Y at-il un moyen de dire quelque chose comme:Existe-t-il un moyen simple de déterminer la taille du type en C#?

sizeof (type)? Ou tapez. Taille?

En ce moment, je suis à la recherche en utilisant le code comme:

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

etc, etc, pour chaque type de données.

Il doit y avoir une solution plus propre, non?

+0

Pouvez-vous expliquer une raison derrière ce que vous voulez faire? – leppie

+0

C'est drôle, j'ai presque posté cette question exacte hier, mais je n'ai pas eu le temps. J'ai besoin de la même chose pour utiliser ADO.NET DbParameters. Parfois, il vous oblige à définir DbParameter.Size, qui est la taille de l'objet en octets. J'ai aussi une grosse déclaration comme celle que vous avez posté à l'origine :) – CodingWithSpike

Répondre

13
+0

Cela ressemble à la taille, en mémoire, d'un objet ou d'une valeur spécifique, qui n'est pas nécessairement la même que la taille d'un type. –

+0

Il existe également une surcharge de type. Je me suis trompé lié à la version d'objet. Se mettra à jour prochainement – JaredPar

+0

Toujours dans le document: "La taille renvoyée correspond à la taille réelle du type non géré Les tailles non gérées et gérées d'un objet peuvent différer Pour les types de caractères, la taille est affectée par la valeur CharSet appliquée à cette classe. " Selon le cas d'utilisation, cela peut être trompeur. –

1

Si ceci est pour l'accès aux données, vous pouvez le faire type.GetTypeCode() (qui est membre de IConvertible), ce qui vous donne une belle enum allumer.

-4

Peut-être que vous pouvez aller Convert.ToString(type.MaxValue, 2).Length/8 ?

Questions connexes