Bagikan melalui


Marshal.SizeOf Metode

Definisi

Mengembalikan ukuran yang tidak dikelola, dalam byte, dari kelas .

Overload

SizeOf(Object)
Kedaluwarsa.

Mengembalikan ukuran objek yang tidak terkelola dalam byte.

SizeOf(Type)
Kedaluwarsa.

Mengembalikan ukuran tipe yang tidak dikelola dalam byte.

SizeOf<T>()

Mengembalikan ukuran tipe yang tidak dikelola dalam byte.

SizeOf<T>(T)

Mengembalikan ukuran objek yang tidak dikelola dari tipe byte tertentu.

SizeOf(Object)

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Perhatian

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

Mengembalikan ukuran objek yang tidak terkelola dalam 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

Parameter

structure
Object

Objek yang ukurannya akan dikembalikan.

Mengembalikan

Ukuran objek yang ditentukan dalam kode yang tidak dikelola.

Atribut

Pengecualian

Parameternya structure adalah null.

Contoh

Contoh berikut membuat struktur terkelola, mentransfernya ke memori yang tidak dikelola, lalu mentransfernya kembali ke memori terkelola. Contoh ini menggunakan SizeOf metode untuk menentukan berapa banyak memori yang tidak dikelola untuk dialokasikan.

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

Keterangan

Metode ini menerima instans struktur, yang dapat menjadi jenis referensi atau jenis nilai kotak. Tata letak harus berurutan atau eksplisit.

Ukuran yang dikembalikan adalah ukuran objek yang tidak dikelola. Ukuran objek yang tidak terkelola dan terkelola dapat berbeda. Untuk jenis karakter, ukurannya dipengaruhi oleh nilai yang diterapkan ke kelas tersebut CharSet .

Anda dapat menggunakan SizeOf metode untuk menentukan berapa banyak memori yang tidak dikelola untuk dialokasikan menggunakan AllocHGlobal metode dan AllocCoTaskMem .

Lihat juga

Berlaku untuk

SizeOf(Type)

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Perhatian

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

Mengembalikan ukuran tipe yang tidak dikelola dalam 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

Parameter

t
Type

Jenis yang ukurannya akan dikembalikan.

Mengembalikan

Ukuran jenis yang ditentukan dalam kode yang tidak dikelola.

Atribut

Pengecualian

Parameter t adalah definisi jenis generik.

Parameternya t adalah null.

Contoh

Contoh berikut menunjukkan pemanggilan SizeOf metode . Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk Marshal kelas .

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

Keterangan

Anda dapat menggunakan metode ini ketika Anda tidak memiliki struktur. Tata letak harus berurutan atau eksplisit.

Ukuran yang dikembalikan adalah ukuran jenis yang tidak dikelola. Ukuran objek yang tidak terkelola dan terkelola dapat berbeda. Untuk jenis karakter, ukurannya dipengaruhi oleh nilai yang diterapkan ke kelas tersebut CharSet .

Lihat juga

Berlaku untuk

SizeOf<T>()

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Mengembalikan ukuran tipe yang tidak dikelola dalam 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

Jenis parameter

T

Jenis yang ukurannya akan dikembalikan.

Mengembalikan

Ukuran, dalam byte, dari jenis yang ditentukan oleh T parameter jenis generik.

Keterangan

Anda dapat menggunakan metode ini ketika Anda tidak memiliki struktur. Tata letak harus berurutan atau eksplisit.

Ukuran yang dikembalikan adalah ukuran jenis yang tidak dikelola. Ukuran objek yang tidak terkelola dan terkelola dapat berbeda. Untuk jenis karakter, ukurannya dipengaruhi oleh nilai yang diterapkan ke kelas tersebut CharSet .

Berlaku untuk

SizeOf<T>(T)

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Mengembalikan ukuran objek yang tidak dikelola dari tipe byte tertentu.

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

Jenis parameter

T

Jenis structure parameter .

Parameter

structure
T

Objek yang ukurannya akan dikembalikan.

Mengembalikan

Ukuran, dalam byte, dari objek yang ditentukan dalam kode yang tidak dikelola.

Pengecualian

Parameternya structure adalah null.

Keterangan

Metode ini menerima instans struktur, yang dapat menjadi jenis referensi atau jenis nilai kotak. Tata letak harus berurutan atau eksplisit.

Ukuran yang dikembalikan adalah ukuran objek yang tidak dikelola. Ukuran objek yang tidak terkelola dan terkelola dapat berbeda. Untuk jenis karakter, ukurannya dipengaruhi oleh nilai yang diterapkan ke kelas tersebut CharSet .

Anda dapat menggunakan SizeOf<T>(T) metode untuk menentukan berapa banyak memori yang tidak dikelola untuk dialokasikan dengan menggunakan AllocHGlobal metode dan AllocCoTaskMem .

Berlaku untuk