Udostępnij za pośrednictwem


Marshal.SizeOf Metoda

Definicja

Zwraca niezarządzany rozmiar klasy w bajtach.

Przeciążenia

SizeOf(Object)
Przestarzałe.

Zwraca niezarządzany rozmiar obiektu w bajtach.

SizeOf(Type)
Przestarzałe.

Zwraca rozmiar niezarządzanego typu w bajtach.

SizeOf<T>()

Zwraca rozmiar niezarządzanego typu w bajtach.

SizeOf<T>(T)

Zwraca niezarządzany rozmiar obiektu określonego typu w bajtach.

SizeOf(Object)

Źródło:
Marshal.cs
Źródło:
Marshal.cs
Źródło:
Marshal.cs

Przestroga

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

Zwraca niezarządzany rozmiar obiektu w bajtach.

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

Parametry

structure
Object

Obiekt, którego rozmiar ma zostać zwrócony.

Zwraca

Rozmiar określonego obiektu w kodzie niezarządzanych.

Atrybuty

Wyjątki

Parametr structure ma wartość null.

Przykłady

W poniższym przykładzie tworzona jest struktura zarządzana, transferowana do niezarządzanej pamięci, a następnie transferowana z powrotem do pamięci zarządzanej. W tym przykładzie użyto SizeOf metody , aby określić ilość niezarządzanej pamięci do przydzielenia.

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

Uwagi

Ta metoda akceptuje wystąpienie struktury, które może być typem odwołania lub typem wartości pola. Układ musi być sekwencyjny lub jawny.

Zwrócony rozmiar to rozmiar niezarządzanego obiektu. Niezarządzane i zarządzane rozmiary obiektu mogą się różnić. W przypadku typów znaków rozmiar ma wpływ na wartość zastosowaną CharSet do tej klasy.

Możesz użyć SizeOf metody , aby określić ilość niezarządzanej pamięci do przydzielenia przy użyciu AllocHGlobal metod i AllocCoTaskMem .

Zobacz też

Dotyczy

SizeOf(Type)

Źródło:
Marshal.cs
Źródło:
Marshal.cs
Źródło:
Marshal.cs

Przestroga

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

Zwraca rozmiar niezarządzanego typu w bajtach.

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

Parametry

t
Type

Typ, którego rozmiar ma zostać zwrócony.

Zwraca

Rozmiar określonego typu w kodzie niezarządzanych.

Atrybuty

Wyjątki

Parametr t jest definicją typu ogólnego.

Parametr t ma wartość null.

Przykłady

W poniższym przykładzie pokazano wywołanie SizeOf metody . Ten przykład kodu jest częścią większego przykładu udostępnionego Marshal dla klasy .

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

Uwagi

Tej metody można użyć, jeśli nie masz struktury. Układ musi być sekwencyjny lub jawny.

Zwrócony rozmiar to rozmiar niezarządzanego typu. Niezarządzane i zarządzane rozmiary obiektu mogą się różnić. W przypadku typów znaków rozmiar ma wpływ na wartość zastosowaną CharSet do tej klasy.

Zobacz też

Dotyczy

SizeOf<T>()

Źródło:
Marshal.cs
Źródło:
Marshal.cs
Źródło:
Marshal.cs

Zwraca rozmiar niezarządzanego typu w bajtach.

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

Parametry typu

T

Typ, którego rozmiar ma zostać zwrócony.

Zwraca

Rozmiar w bajtach typu określony przez T parametr typu ogólnego.

Uwagi

Tej metody można użyć, jeśli nie masz struktury. Układ musi być sekwencyjny lub jawny.

Zwrócony rozmiar to rozmiar niezarządzanego typu. Niezarządzane i zarządzane rozmiary obiektu mogą się różnić. W przypadku typów znaków rozmiar ma wpływ na wartość zastosowaną CharSet do tej klasy.

Dotyczy

SizeOf<T>(T)

Źródło:
Marshal.cs
Źródło:
Marshal.cs
Źródło:
Marshal.cs

Zwraca niezarządzany rozmiar obiektu określonego typu w bajtach.

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

Parametry typu

T

Typ parametru structure .

Parametry

structure
T

Obiekt, którego rozmiar ma zostać zwrócony.

Zwraca

Rozmiar w bajtach określonego obiektu w kodzie niezarządzanych.

Wyjątki

Parametr structure ma wartość null.

Uwagi

Ta metoda akceptuje wystąpienie struktury, które może być typem odwołania lub typem wartości pola. Układ musi być sekwencyjny lub jawny.

Zwrócony rozmiar to rozmiar niezarządzanego obiektu. Niezarządzane i zarządzane rozmiary obiektu mogą się różnić. W przypadku typów znaków rozmiar ma wpływ na wartość zastosowaną CharSet do tej klasy.

Możesz użyć SizeOf<T>(T) metody , aby określić ilość niezarządzanej pamięci do przydzielenia przy użyciu AllocHGlobal metod i AllocCoTaskMem .

Dotyczy