Type.IsExplicitLayout プロパティ
Type に、クラスのレイアウト属性として ExplicitLayout が選択されているかどうかを示す値を取得します。
Public ReadOnly Property IsExplicitLayout As Boolean
[C#]
public bool IsExplicitLayout {get;}
[C++]
public: __property bool get_IsExplicitLayout();
[JScript]
public function get IsExplicitLayout() : Boolean;
プロパティ値
Type に、クラスのレイアウト属性として ExplicitLayout が選択されている場合は true 。それ以外の場合は false 。
解説
LayoutMask は、クラスのレイアウト属性を選択するために使用します。クラス レイアウト属性 (AutoLayout 、 SequentialLayout 、および ExplicitLayout) は、クラス インスタンスのフィールドのメモリ上でのレイアウトを定義します。
ExplicitLayout 属性でクラスをマークすると、ローダーはフィールドの順序を無視し、フィールド オフセット、クラス全体のサイズと配置、またはそれらすべて、などの形で指定されている明示的なレイアウト規則を使用します。
各フィールドの開始位置のオフセット、クラスのオブジェクト全体のサイズ、またはオプションとして、クラスのオブジェクトのパッキング サイズを指定するには、 ExplicitLayout 属性を使用します。パッキング サイズはフィールド間の空きメモリ空間であり、1、2、4、8、または 16 バイトである必要があります。
使用例
[Visual Basic, C#, C++] 指定した型のインスタンスを作成し、 MyDemoAttribute クラスの IsExplicitLayout プロパティを表示する例を次に示します。
Imports System
Imports System.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic
'The class to be tested for the ExplicitLayout property.
<StructLayoutAttribute(LayoutKind.Explicit)> Public Class MyDemoAttribute
End Class 'MyDemoAttribute
Public Class MyTypeClass
Public Shared Sub Main()
MyIsExplicitLayoutMethod("MyDemoAttribute")
End Sub 'Main
Public Shared Sub MyIsExplicitLayoutMethod(ByVal typeName As String)
Try
'Create an instance of the type using the GetType method.
Dim myType As Type = Type.GetType(typeName)
' Get and display the IsExplicitLayout property.
Console.WriteLine(ControlChars.Cr + "The IsExplicitLayout property of the MyDemoAttribute instance is {0}.", myType.IsExplicitLayout.ToString())
Catch e As Exception
Console.WriteLine("An exception occurred: {0}.", e.Message.ToString())
End Try
End Sub 'MyIsExplicitLayoutMethod
End Class 'MyTypeClass
[C#]
using System;
using System.Reflection;
using System.ComponentModel;
using System.Runtime.InteropServices;
//The class to be tested for the ExplicitLayout property.
[StructLayoutAttribute(LayoutKind.Explicit)]
public class MyDemoAttribute
{
}
public class MyTypeClass
{
public static void Main(string[] args)
{
MyIsExplicitLayoutMethod("MyDemoAttribute");
}
public static void MyIsExplicitLayoutMethod(string typeName)
{
try
{
// Create an instance of the type using the GetType method.
Type myType=Type.GetType(typeName);
// Get and display the IsExplicitLayout property.
Console.WriteLine("\nThe IsExplicitLayout property of the MyDemoAttribute instance is {0}.", myType.IsExplicitLayout);
}
catch(Exception e)
{
Console.WriteLine("\nAn exception occurred: {0}.", e.Message);
}
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::ComponentModel;
using namespace System::Runtime::InteropServices;
//The class to be tested for the ExplicitLayout property.
[StructLayoutAttribute(LayoutKind::Explicit)]
public __gc class MyDemoAttribute {
};
void MyIsExplicitLayoutMethod(String* typeName) {
try {
// Create an instance of the type using the GetType method.
Type* myType=Type::GetType(typeName);
// Get and display the IsExplicitLayout property.
Console::WriteLine(S"\nThe IsExplicitLayout property of the MyDemoAttribute instance is {0}.",
__box( myType->IsExplicitLayout));
} catch (Exception* e) {
Console::WriteLine(S"\nAn exception occurred: {0}.", e->Message);
}
}
int main() {
MyIsExplicitLayoutMethod(S"MyDemoAttribute");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, Common Language Infrastructure (CLI) Standard
参照
Type クラス | Type メンバ | System 名前空間 | TypeAttributes | IsAutoLayout | IsLayoutSequential | メタデータの概要