Condividi tramite


Marshal.SizeOf Metodo

Definizione

Restituisce in byte la dimensione non gestita di una classe.

Overload

SizeOf(Object)
Obsoleti.

Restituisce la dimensione non gestita di un oggetto, espressa in byte.

SizeOf(Type)
Obsoleti.

Restituisce la dimensione di un tipo non gestito espressa in byte.

SizeOf<T>()

Restituisce la dimensione di un tipo non gestito espressa in byte.

SizeOf<T>(T)

Restituisce la dimensione non gestita di un oggetto di un tipo specifico in byte.

SizeOf(Object)

Origine:
Marshal.cs
Origine:
Marshal.cs
Origine:
Marshal.cs

Attenzione

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

Restituisce la dimensione non gestita di un oggetto, espressa in byte.

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

Parametri

structure
Object

Oggetto di cui verrà restituita la dimensione.

Restituisce

Dimensione dell'oggetto specificato nel codice non gestito.

Attributi

Eccezioni

Il valore del parametro structure è null.

Esempio

L'esempio seguente crea una struttura gestita, la trasferisce alla memoria non gestita e quindi la trasferisce nuovamente alla memoria gestita. In questo esempio viene utilizzato il SizeOf metodo per determinare la quantità di memoria non gestita da allocare.

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

Commenti

Questo metodo accetta un'istanza di una struttura, che può essere un tipo riferimento o un tipo valore boxed. Il layout deve essere sequenziale o esplicito.

La dimensione restituita è la dimensione dell'oggetto non gestito. Le dimensioni non gestite e gestite di un oggetto possono essere diverse. Per i tipi di carattere, le dimensioni sono influenzate dal CharSet valore applicato a tale classe.

È possibile utilizzare il SizeOf metodo per determinare la quantità di memoria non gestita da allocare usando i AllocHGlobal metodi e AllocCoTaskMem .

Vedi anche

Si applica a

SizeOf(Type)

Origine:
Marshal.cs
Origine:
Marshal.cs
Origine:
Marshal.cs

Attenzione

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

Restituisce la dimensione di un tipo non gestito espressa in byte.

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

Parametri

t
Type

Tipo di cui verrà restituita la dimensione.

Restituisce

Dimensione del tipo specificato nel codice non gestito.

Attributi

Eccezioni

Il parametro t è una definizione di tipo generico.

Il valore del parametro t è null.

Esempio

Nel codice riportato di seguito viene illustrata la chiamata al metodo SizeOf. Questo esempio di codice fa parte di un esempio più ampio fornito per la Marshal classe .

// 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))

Commenti

È possibile utilizzare questo metodo quando non si dispone di una struttura. Il layout deve essere sequenziale o esplicito.

La dimensione restituita è la dimensione del tipo non gestito. Le dimensioni non gestite e gestite di un oggetto possono essere diverse. Per i tipi di carattere, le dimensioni sono influenzate dal CharSet valore applicato a tale classe.

Vedi anche

Si applica a

SizeOf<T>()

Origine:
Marshal.cs
Origine:
Marshal.cs
Origine:
Marshal.cs

Restituisce la dimensione di un tipo non gestito espressa in byte.

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

Parametri di tipo

T

Tipo di cui verrà restituita la dimensione.

Restituisce

Dimensione, in byte, del tipo specificato dal parametro di tipo generico T.

Commenti

È possibile utilizzare questo metodo quando non si dispone di una struttura. Il layout deve essere sequenziale o esplicito.

La dimensione restituita è la dimensione del tipo non gestito. Le dimensioni non gestite e gestite di un oggetto possono essere diverse. Per i tipi di carattere, le dimensioni sono influenzate dal CharSet valore applicato a tale classe.

Si applica a

SizeOf<T>(T)

Origine:
Marshal.cs
Origine:
Marshal.cs
Origine:
Marshal.cs

Restituisce la dimensione non gestita di un oggetto di un tipo specifico in byte.

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

Parametri di tipo

T

Tipo del parametro structure.

Parametri

structure
T

Oggetto di cui verrà restituita la dimensione.

Restituisce

Dimensione, in byte, dell'oggetto specificato nel codice non gestito.

Eccezioni

Il valore del parametro structure è null.

Commenti

Questo metodo accetta un'istanza di una struttura, che può essere un tipo riferimento o un tipo valore boxed. Il layout deve essere sequenziale o esplicito.

La dimensione restituita è la dimensione dell'oggetto non gestito. Le dimensioni non gestite e gestite di un oggetto possono essere diverse. Per i tipi di carattere, le dimensioni sono influenzate dal CharSet valore applicato a tale classe.

È possibile utilizzare il SizeOf<T>(T) metodo per determinare la quantità di memoria non gestita da allocare usando i AllocHGlobal metodi e AllocCoTaskMem .

Si applica a