次の方法で共有


Marshal.SizeOf メソッド

定義

クラスのアンマネージ サイズを返します (バイト単位)。

オーバーロード

SizeOf(Object)
古い.

オブジェクトのアンマネージ サイズをバイト単位で返します。

SizeOf(Type)
古い.

アンマネージ型のサイズを返します (バイト単位)。

SizeOf<T>()

アンマネージ型のサイズを返します (バイト単位)。

SizeOf<T>(T)

指定された型のオブジェクトのアンマネージのサイズをバイト数で返します。

SizeOf(Object)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

注意事項

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

サイズが返されるオブジェクト。

戻り値

アンマネージ コードの指定したオブジェクトのサイズ。

属性

例外

structure パラメーターが null です。

次の例では、マネージド構造体を作成し、アンマネージド メモリに転送してから、マネージド メモリに転送します。 この例では、 メソッドを SizeOf 使用して、割り当てるアンマネージド メモリの量を決定します。

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

注釈

このメソッドは、参照型またはボックス化された値型の構造体のインスタンスを受け入れます。 レイアウトはシーケンシャルまたは明示的である必要があります。

返されるサイズは、アンマネージド オブジェクトのサイズです。 オブジェクトのアンマネージド サイズとマネージド サイズは異なる場合があります。 文字型の場合、サイズはそのクラスに適用される CharSet 値の影響を受けます。

メソッドをSizeOf使用して、 メソッドと AllocCoTaskMem メソッドを使用して割り当てるアンマネージ メモリの量をAllocHGlobal決定できます。

こちらもご覧ください

適用対象

SizeOf(Type)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

注意事項

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);
[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

サイズが返される型。

戻り値

アンマネージ コードの指定した型のサイズ。

属性

例外

t パラメーターがジェネリック型定義です。

t パラメーターが null です。

次の例では、SizeOf メソッドを呼び出す方法を示しています。 このコード例は、Marshal クラスのために提供されている大規模な例の一部です。

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

注釈

構造体がない場合は、このメソッドを使用できます。 レイアウトはシーケンシャルまたは明示的である必要があります。

返されるサイズは、アンマネージ型のサイズです。 オブジェクトのアンマネージド サイズとマネージド サイズは異なる場合があります。 文字型の場合、サイズはそのクラスに適用される CharSet 値の影響を受けます。

こちらもご覧ください

適用対象

SizeOf<T>()

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

アンマネージ型のサイズを返します (バイト単位)。

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

サイズが返される型。

戻り値

T ジェネリック型パラメーターで指定される型のサイズ (バイト単位)。

注釈

構造体がない場合は、このメソッドを使用できます。 レイアウトはシーケンシャルまたは明示的である必要があります。

返されるサイズは、アンマネージ型のサイズです。 オブジェクトのアンマネージド サイズとマネージド サイズは異なる場合があります。 文字型の場合、サイズはそのクラスに適用される CharSet 値の影響を受けます。

適用対象

SizeOf<T>(T)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

指定された型のオブジェクトのアンマネージのサイズをバイト数で返します。

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 パラメーターの型。

パラメーター

structure
T

サイズが返されるオブジェクト。

戻り値

アンマネージ コードの指定したオブジェクトのサイズ (バイト単位)。

例外

structure パラメーターが null です。

注釈

このメソッドは、参照型またはボックス化された値型の構造体のインスタンスを受け入れます。 レイアウトはシーケンシャルまたは明示的である必要があります。

返されるサイズは、アンマネージド オブジェクトのサイズです。 オブジェクトのアンマネージド サイズとマネージド サイズは異なる場合があります。 文字型の場合、サイズはそのクラスに適用される CharSet 値の影響を受けます。

メソッドをSizeOf<T>(T)使用すると、 メソッドと AllocCoTaskMem メソッドを使用して、割り当てるアンマネージ メモリの量をAllocHGlobal確認できます。

適用対象