Marshal.SizeOf Marshal.SizeOf Marshal.SizeOf Marshal.SizeOf Method

定義

クラスのアンマネージ サイズを返します (バイト単位)。Returns the unmanaged size, in bytes, of a class.

オーバーロード

SizeOf(Object) SizeOf(Object) SizeOf(Object) SizeOf(Object)

オブジェクトのアンマネージ サイズをバイト単位で返します。Returns the unmanaged size of an object in bytes.

SizeOf(Type) SizeOf(Type) SizeOf(Type) SizeOf(Type)

アンマネージ型のサイズを返します (バイト単位)。Returns the size of an unmanaged type in bytes.

SizeOf<T>() SizeOf<T>() SizeOf<T>() SizeOf<T>()

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions] アンマネージ型のサイズを返します (バイト単位)。Returns the size of an unmanaged type in bytes.

SizeOf<T>(T) SizeOf<T>(T) SizeOf<T>(T) SizeOf<T>(T)

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions] 指定された型のオブジェクトのアンマネージのサイズをバイト数で返します。Returns the unmanaged size of an object of a specified type in bytes.

SizeOf(Object) SizeOf(Object) SizeOf(Object) SizeOf(Object)

警告

この API は現在使われていません。

オブジェクトのアンマネージ サイズをバイト単位で返します。Returns the unmanaged size of an object in bytes.

public:
 static int SizeOf(System::Object ^ structure);
[System.Runtime.InteropServices.ComVisible(true)]
[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);
static member SizeOf : obj -> int
Public Shared Function SizeOf (structure As Object) As Integer

パラメーター

structure
Object Object Object Object

サイズが返されるオブジェクト。The object whose size is to be returned.

戻り値

アンマネージ コードの指定したオブジェクトのサイズ。The size of the specified object in unmanaged code.

例外

structure パラメーターが null です。The structure parameter is null.

次の例は、マネージ構造体を作成します。、アンマネージ メモリに転送し、マネージ メモリに再度に転送します。The following example creates a managed structure, transfers it to unmanaged memory, and then transfers it back to managed memory. この例では、SizeOfメソッドをアンマネージ メモリの量を割り当てることを確認します。This example uses the SizeOf method to determine how much unmanaged memory to allocate.

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


注釈

このメソッドは、参照型またはボックス化された値の型を指定できます構造体のインスタンスを受け取ります。This method accepts an instance of a structure, which can be a reference type or a boxed value type. レイアウトは、シーケンシャルまたは明示的である必要があります。The layout must be sequential or explicit.

返されるサイズは、アンマネージ オブジェクトのサイズです。The size returned is the size of the unmanaged object. オブジェクトのアンマネージ コードとマネージのサイズが異なることができます。The unmanaged and managed sizes of an object can differ. 文字型の場合、サイズが影響を受ける、CharSetそのクラスに適用される値。For character types, the size is affected by the CharSet value applied to that class.

使用することができます、SizeOf割り当てを使用してアンマネージ メモリの量を決定する方法、AllocHGlobalAllocCoTaskMemメソッド。You can use the SizeOf method to determine how much unmanaged memory to allocate using the AllocHGlobal and AllocCoTaskMem methods.

こちらもご覧ください

SizeOf(Type) SizeOf(Type) SizeOf(Type) SizeOf(Type)

警告

この API は現在使われていません。

アンマネージ型のサイズを返します (バイト単位)。Returns the size of an unmanaged type in bytes.

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);
static member SizeOf : Type -> int
Public Shared Function SizeOf (t As Type) As Integer

パラメーター

t
Type Type Type Type

サイズが返される型。The type whose size is to be returned.

戻り値

アンマネージ コードの指定した型のサイズ。The size of the specified type in unmanaged code.

例外

t パラメーターがジェネリック型定義です。The t parameter is a generic type definition.

t パラメーターが null です。The t parameter is null.

次の例では、SizeOf メソッドを呼び出す方法を示しています。The following example demonstrates calling the SizeOf method. このコード例が示されている例の一部、Marshalクラス。This code example is part of a larger example provided for the Marshal class.

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

注釈

構造体を持っていない場合、このメソッドを使用することができます。You can use this method when you do not have a structure. レイアウトは、シーケンシャルまたは明示的である必要があります。The layout must be sequential or explicit.

返されるサイズは、アンマネージ型のサイズです。The size returned is the size of the unmanaged type. オブジェクトのアンマネージ コードとマネージのサイズが異なることができます。The unmanaged and managed sizes of an object can differ. 文字型の場合、サイズが影響を受ける、CharSetそのクラスに適用される値。For character types, the size is affected by the CharSet value applied to that class.

こちらもご覧ください

SizeOf<T>() SizeOf<T>() SizeOf<T>() SizeOf<T>()

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions] アンマネージ型のサイズを返します (バイト単位)。Returns the size of an unmanaged type in bytes.

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

型パラメーター

T

サイズが返される型。The type whose size is to be returned.

戻り値

T ジェネリック型パラメーターで指定される型のサイズ (バイト単位)。The size, in bytes, of the type that is specified by the T generic type parameter.

注釈

構造体を持っていない場合、このメソッドを使用することができます。You can use this method when you do not have a structure. レイアウトは、シーケンシャルまたは明示的である必要があります。The layout must be sequential or explicit.

返されるサイズは、アンマネージ型のサイズです。The size returned is the size of the unmanaged type. オブジェクトのアンマネージ コードとマネージのサイズが異なることができます。The unmanaged and managed sizes of an object can differ. 文字型の場合、サイズが影響を受ける、CharSetそのクラスに適用される値。For character types, the size is affected by the CharSet value applied to that class.

SizeOf<T>(T) SizeOf<T>(T) SizeOf<T>(T) SizeOf<T>(T)

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions] 指定された型のオブジェクトのアンマネージのサイズをバイト数で返します。Returns the unmanaged size of an object of a specified type in 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

型パラメーター

T

structure パラメーターの型。The type of the structure parameter.

パラメーター

structure
T T T T

サイズが返されるオブジェクト。The object whose size is to be returned.

戻り値

アンマネージ コードの指定したオブジェクトのサイズ (バイト単位)。The size, in bytes, of the specified object in unmanaged code.

例外

structure パラメーターが null です。The structure parameter is null.

注釈

このメソッドは、参照型またはボックス化された値の型を指定できます構造体のインスタンスを受け取ります。This method accepts an instance of a structure, which can be a reference type or a boxed value type. レイアウトは、シーケンシャルまたは明示的である必要があります。The layout must be sequential or explicit.

返されるサイズは、アンマネージ オブジェクトのサイズです。The size returned is the size of the unmanaged object. オブジェクトのアンマネージ コードとマネージのサイズが異なることができます。The unmanaged and managed sizes of an object can differ. 文字型の場合、サイズが影響を受ける、CharSetそのクラスに適用される値。For character types, the size is affected by the CharSet value applied to that class.

使用することができます、SizeOf<T>(T)を使用して割り当てるアンマネージ メモリの量を決定する方法、AllocHGlobalAllocCoTaskMemメソッド。You can use the SizeOf<T>(T) method to determine how much unmanaged memory to allocate by using the AllocHGlobal and AllocCoTaskMem methods.

適用対象