Marshal.SizeOf メソッド

定義

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

オーバーロード

SizeOf(Object)
互換性のために残されています。

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

SizeOf(Type)
互換性のために残されています。

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

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)

[.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) may be unavailable in future releases. Instead, use SizeOf(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514

オブジェクトのアンマネージ サイズをバイト単位で返します。Returns the unmanaged size of an object in 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

パラメーター

structure
Object

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

戻り値

Int32

アンマネージ コードの指定したオブジェクトのサイズ。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.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 て、メソッドとメソッドを使用して割り当てられるアンマネージメモリの量を確認でき AllocHGlobal AllocCoTaskMem ます。You can use the SizeOf method to determine how much unmanaged memory to allocate using the AllocHGlobal and AllocCoTaskMem methods.

こちらもご覧ください

適用対象

SizeOf(Type)

注意事項

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

アンマネージ型のサイズを返します (バイト単位)。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);
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

パラメーター

t
Type

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

戻り値

Int32

アンマネージ コードの指定した型のサイズ。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>()

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

戻り値

Int32

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)

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

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

戻り値

Int32

アンマネージ コードの指定したオブジェクトのサイズ (バイト単位)。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) とメソッドを使用して、割り当てられるアンマネージメモリの量を確認でき AllocHGlobal AllocCoTaskMem ます。You can use the SizeOf<T>(T) method to determine how much unmanaged memory to allocate by using the AllocHGlobal and AllocCoTaskMem methods.

適用対象