sizeof (Referencia de C#)
Se usa para obtener el tamaño en bytes de un tipo no administrado. Los tipos no administrados incluyen los tipos integrados que se muestran en la tabla que figura a continuación, además de estos:
Tipos de enumeración
Tipos de puntero
Structs definidos por el usuario que no contienen ningún campo o propiedad que sea un tipo de referencia
En el ejemplo siguiente, se muestra cómo recuperar el tamaño de un valor de tipo int:
// Constant value 4:
int intSize = sizeof(int);
Comentarios
A partir de la versión 2.0 de C#, la aplicación de sizeof a los tipos integrados ya no requiere el uso del modo no seguro.
El operador sizeof no se puede sobrecargar. Los valores devueltos por el operador sizeof son del tipo int. En la tabla siguiente, se muestran los valores constantes que se sustituyen por expresiones sizeof que tienen determinados tipos integrados como operandos.
Expresión |
Valor constante |
---|---|
sizeof(sbyte) |
1 |
sizeof(byte) |
1 |
sizeof(short) |
2 |
sizeof(ushort) |
2 |
sizeof(int) |
4 |
sizeof(uint) |
4 |
sizeof(long) |
8 |
sizeof(ulong) |
8 |
sizeof(char) |
2 (Unicode) |
sizeof(float) |
4 |
sizeof(double) |
8 |
sizeof(decimal) |
16 |
sizeof(bool) |
1 |
Para todos los demás tipos, incluidos los structs, el operador sizeof se puede usar únicamente en bloques de código no seguro. Si bien se puede usar el método Marshal.SizeOf, el valor devuelto por este método no siempre es idéntico al valor devuelto por sizeof. Marshal.SizeOf devuelve el tamaño una vez calculadas las referencias del tipo, mientras que sizeof devuelve el tamaño asignado por Common Language Runtime, incluido el relleno.
Ejemplo
class MainClass
{
// unsafe not required for primitive types
static void Main()
{
Console.WriteLine("The size of short is {0}.", sizeof(short));
Console.WriteLine("The size of int is {0}.", sizeof(int));
Console.WriteLine("The size of long is {0}.", sizeof(long));
}
}
/*
Output:
The size of short is 2.
The size of int is 4.
The size of long is 8.
*/
Especificación del lenguaje C#
Para obtener más información, vea la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
Referencia
Palabras clave de operadores (Referencia de C#)
Código no seguro y punteros (Guía de programación de C#)
Estructuras (Guía de programación de C#)
Constantes (Guía de programación de C#)