2008-12-12 19 views
7

¿Hay alguna manera de decir algo como:¿Existe alguna manera simple de determinar el tamaño de letra en C#?

sizeof (type)? O escriba. ¿Tamaño?

Ahora estoy mirando utilizando código como:

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

etc, etc, para cada tipo de datos único.

Debe haber una solución más limpia, ¿no?

+0

¿Puedes explicar una razón detrás de lo que quieres hacer? – leppie

+0

Eso es gracioso, casi escribí esta pregunta ayer, pero no tuve tiempo. Necesito exactamente lo mismo para usar ADO.NET DbParameters. A veces te obliga a establecer DbParameter.Size, que es el tamaño del objeto en bytes. Yo también tenía una gran declaración de cambio como la que originalmente publicó :) – CodingWithSpike

Respuesta

13
+0

Parece que tiene el tamaño, en memoria, de un objeto o valor específico, que no es necesariamente el mismo que el tamaño de un tipo. –

+0

También hay una sobrecarga de tipo. I erróneamente vinculado a la versión del objeto. Se actualizará en breve – JaredPar

+0

Aún así, del documento: "El tamaño devuelto es realmente el tamaño del tipo no administrado. Los tamaños no administrados y administrados de un objeto pueden diferir. Para los tipos de caracteres, el tamaño se ve afectado por el valor de CharSet aplicado a esa clase ". Según cuál sea el caso de uso, podría ser engañoso. –

1

Si se trata de acceso a datos, puede hacerlo type.GetTypeCode() (que es miembro de IConvertible), lo que le da una buena enumeración de encender.

-4

Quizás usted puede ir Convert.ToString(type.MaxValue, 2).Length/8 ?

Cuestiones relacionadas