Compartir a través de


Marshal.SizeOf Método

Definición

Devuelve el tamaño no administrado, en bytes, de una clase.

Sobrecargas

SizeOf(Object)
Obsoletos.

Devuelve el tamaño no administrado de un objeto en bytes.

SizeOf(Type)
Obsoletos.

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

SizeOf<T>()

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

SizeOf<T>(T)

Devuelve el tamaño no administrado de un objeto de un tipo especificado en bytes.

SizeOf(Object)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Precaución

SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514

Devuelve el tamaño no administrado de un objeto en bytes.

public:
 static int SizeOf(System::Object ^ structure);
[System.Obsolete("SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514")]
public static int SizeOf (object structure);
public static int SizeOf (object structure);
[System.Runtime.InteropServices.ComVisible(true)]
public static int SizeOf (object structure);
[<System.Obsolete("SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514")>]
static member SizeOf : obj -> int
static member SizeOf : obj -> int
[<System.Runtime.InteropServices.ComVisible(true)>]
static member SizeOf : obj -> int
Public Shared Function SizeOf (structure As Object) As Integer

Parámetros

structure
Object

Objeto cuyo tamaño se devolverá.

Devoluciones

Tamaño del objeto especificado en código no administrado.

Atributos

Excepciones

El parámetro structure es null.

Ejemplos

En el ejemplo siguiente se crea una estructura administrada, se transfiere a la memoria no administrada y, a continuación, se transfiere a la memoria administrada. En este ejemplo se usa el SizeOf método para determinar la cantidad de memoria no administrada que se va a asignar.

using System;
using System.Runtime.InteropServices;

public struct Point
{
    public int x;
    public int y;
}

class Example
{

    static void Main()
    {

        // Create a point struct.
        Point p;
        p.x = 1;
        p.y = 1;

        Console.WriteLine("The value of first point is " + p.x + " and " + p.y + ".");

        // Initialize unmanged memory to hold the struct.
        IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(p));

        try
        {

            // Copy the struct to unmanaged memory.
            Marshal.StructureToPtr(p, pnt, false);

            // Create another point.
            Point anotherP;

            // Set this Point to the value of the
            // Point in unmanaged memory.
            anotherP = (Point)Marshal.PtrToStructure(pnt, typeof(Point));

            Console.WriteLine("The value of new point is " + anotherP.x + " and " + anotherP.y + ".");
        }
        finally
        {
            // Free the unmanaged memory.
            Marshal.FreeHGlobal(pnt);
        }
    }
}
Imports System.Runtime.InteropServices



Public Structure Point
    Public x As Integer
    Public y As Integer
End Structure


Module Example


    Sub Main()

        ' Create a point struct.
        Dim p As Point
        p.x = 1
        p.y = 1

        Console.WriteLine("The value of first point is " + p.x.ToString + " and " + p.y.ToString + ".")

        ' Initialize unmanged memory to hold the struct.
        Dim pnt As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(p))

        Try

            ' Copy the struct to unmanaged memory.
            Marshal.StructureToPtr(p, pnt, False)

            ' Create another point.
            Dim anotherP As Point

            ' Set this Point to the value of the 
            ' Point in unmanaged memory. 
            anotherP = CType(Marshal.PtrToStructure(pnt, GetType(Point)), Point)

            Console.WriteLine("The value of new point is " + anotherP.x.ToString + " and " + anotherP.y.ToString + ".")

        Finally
            ' Free the unmanaged memory.
            Marshal.FreeHGlobal(pnt)
        End Try

    End Sub
End Module

Comentarios

Este método acepta una instancia de una estructura, que puede ser un tipo de referencia o un tipo de valor con conversión boxing. El diseño debe ser secuencial o explícito.

El tamaño devuelto es el tamaño del objeto no administrado. Los tamaños no administrados y administrados de un objeto pueden diferir. En el caso de los tipos de caracteres, el tamaño se ve afectado por el CharSet valor aplicado a esa clase.

Puede usar el SizeOf método para determinar la cantidad de memoria no administrada que se va a asignar mediante los AllocHGlobal métodos y AllocCoTaskMem .

Consulte también

Se aplica a

SizeOf(Type)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Precaución

SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

public:
 static int SizeOf(Type ^ t);
[System.Obsolete("SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515")]
public static int SizeOf (Type t);
public static int SizeOf (Type t);
[<System.Obsolete("SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515")>]
static member SizeOf : Type -> int
static member SizeOf : Type -> int
Public Shared Function SizeOf (t As Type) As Integer

Parámetros

t
Type

Tipo cuyo tamaño se va a devolver.

Devoluciones

Tamaño del tipo especificado en código no administrado.

Atributos

Excepciones

El parámetro t es una definición de tipo genérico.

El parámetro t es null.

Ejemplos

En el ejemplo siguiente se muestra la forma de llamar al método SizeOf. Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase Marshal.

// Demonstrate the use of the SizeOf method of the Marshal
// class.
Console::WriteLine("Number of bytes needed by a Point object: {0}",
    Marshal::SizeOf(Point::typeid));
Point point;
Console::WriteLine("Number of bytes needed by a Point object: {0}",
    Marshal::SizeOf(point));
// Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}",
    Marshal.SizeOf(typeof(Point)));
Point p = new Point();
Console.WriteLine("Number of bytes needed by a Point object: {0}",
    Marshal.SizeOf(p));
' Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(GetType(Point)))
Dim p As New Point()
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(p))

Comentarios

Puede usar este método cuando no tenga una estructura. El diseño debe ser secuencial o explícito.

El tamaño devuelto es el tamaño del tipo no administrado. Los tamaños no administrados y administrados de un objeto pueden diferir. En el caso de los tipos de caracteres, el tamaño se ve afectado por el CharSet valor aplicado a esa clase.

Consulte también

Se aplica a

SizeOf<T>()

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Devuelve el tamaño, expresado en bytes, de un tipo no administrado.

public:
generic <typename T>
 static int SizeOf();
public static int SizeOf<T> ();
static member SizeOf : unit -> int
Public Shared Function SizeOf(Of T) () As Integer

Parámetros de tipo

T

Tipo cuyo tamaño se va a devolver.

Devoluciones

El tamaño, en bytes, del tipo especificado por el parámetro de tipo genérico T.

Comentarios

Puede usar este método cuando no tenga una estructura. El diseño debe ser secuencial o explícito.

El tamaño devuelto es el tamaño del tipo no administrado. Los tamaños no administrados y administrados de un objeto pueden diferir. En el caso de los tipos de caracteres, el tamaño se ve afectado por el CharSet valor aplicado a esa clase.

Se aplica a

SizeOf<T>(T)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Devuelve el tamaño no administrado de un objeto de un tipo especificado en bytes.

public:
generic <typename T>
 static int SizeOf(T structure);
public static int SizeOf<T> (T structure);
static member SizeOf : 'T -> int
Public Shared Function SizeOf(Of T) (structure As T) As Integer

Parámetros de tipo

T

Tipo del parámetro structure.

Parámetros

structure
T

Objeto cuyo tamaño se devolverá.

Devoluciones

Tamaño del objeto especificado, en bytes, en código no administrado.

Excepciones

El parámetro structure es null.

Comentarios

Este método acepta una instancia de una estructura, que puede ser un tipo de referencia o un tipo de valor con conversión boxing. El diseño debe ser secuencial o explícito.

El tamaño devuelto es el tamaño del objeto no administrado. Los tamaños no administrados y administrados de un objeto pueden diferir. En el caso de los tipos de caracteres, el tamaño se ve afectado por el CharSet valor aplicado a esa clase.

Puede usar el SizeOf<T>(T) método para determinar la cantidad de memoria no administrada que se va a asignar mediante los AllocHGlobal métodos y AllocCoTaskMem .

Se aplica a