Marshal.SizeOf Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 .