sizeof (Referencia de C#)sizeof (C# Reference)

Se usa para obtener el tamaño en bytes de un tipo no administrado.Used to obtain the size in bytes for an unmanaged type.

Los tipos no administrados incluyen:Unmanaged types include:

  • Los tipos simples se enumeran en la tabla siguiente:The simple types that are listed in the following table:

    ExpresiónExpression Valor constanteConstant value
    sizeof(sbyte) 11
    sizeof(byte) 11
    sizeof(short) 22
    sizeof(ushort) 22
    sizeof(int) 44
    sizeof(uint) 44
    sizeof(long) 88
    sizeof(ulong) 88
    sizeof(char) 2 (Unicode)2 (Unicode)
    sizeof(float) 44
    sizeof(double) 88
    sizeof(decimal) 1616
    sizeof(bool) 11
  • Tipos de enumeración.Enum types.

  • Tipos de puntero.Pointer types.

  • Estructuras definidas por el usuario que no contienen los campos de instancia o las propiedades de instancia implementadas automáticamente que son tipos de referencia o tipos construidos.User-defined structs that do not contain any instance fields or auto-implemented instance properties that are reference types or constructed types.

En el ejemplo siguiente, se muestra cómo recuperar el tamaño de un valor de tipo int:The following example shows how to retrieve the size of an int:

// Constant value 4:
int intSize = sizeof(int);

ComentariosRemarks

A partir de la versión 2.0 de C#, para aplicar sizeof a tipos simples o de enumeración ya no se requiere que el código se compile en un contexto unsafe.Starting with version 2.0 of C#, applying sizeof to simple or enum types no longer requires that code be compiled in an unsafe context.

El operador sizeof no se puede sobrecargar.The sizeof operator cannot be overloaded. Los valores devueltos por el operador sizeof son del tipo int.The values returned by the sizeof operator are of type int. En la tabla anterior, se muestran los valores constantes que se sustituyen por expresiones sizeof que tienen determinados tipos simples como operandos.The previous table shows the constant values that are substituted for sizeof expressions that have certain simple types as operands.

Para todos los demás tipos, incluidos los structs, el operador sizeof se puede usar únicamente en bloques de código no seguro.For all other types, including structs, the sizeof operator can be used only in unsafe code blocks. Aunque puede usar el método Marshal.SizeOf, el valor devuelto mediante este método no es siempre el mismo que el valor devuelto por sizeof.Although you can use the Marshal.SizeOf method, the value returned by this method is not always the same as the value returned by sizeof. Marshal.SizeOf devuelve el tamaño una vez calculado el tipo, mientras que sizeof devuelve el tamaño asignado por Common Language Runtime, incluido el relleno.Marshal.SizeOf returns the size after the type has been marshaled, whereas sizeof returns the size as it has been allocated by the common language runtime, including any padding.

EjemploExample

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#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also