Type.IsExplicitLayout Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli türdeki alanların açıkça belirtilen uzaklıklarda yerleştirilip yerleştirildiğini belirten bir değer alır.
public:
property bool IsExplicitLayout { bool get(); };
public bool IsExplicitLayout { get; }
member this.IsExplicitLayout : bool
Public ReadOnly Property IsExplicitLayout As Boolean
Özellik Değeri
true
geçerli türün Attributes özelliği içeriyorsa ExplicitLayout; değilse, false
.
Uygulamalar
Örnekler
Aşağıdaki örnek bir türün örneğini oluşturur ve özelliğinin IsExplicitLayout değerini görüntüler. aynı zamanda için StructLayoutAttributekod örneğinde yer alan sınıfını kullanırMySystemTime
.
using System;
using System.Reflection;
using System.ComponentModel;
using System.Runtime.InteropServices;
// Class to test for the ExplicitLayout property.
[StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
public class MySystemTime
{
[FieldOffset(0)]public ushort wYear;
[FieldOffset(2)]public ushort wMonth;
[FieldOffset(4)]public ushort wDayOfWeek;
[FieldOffset(6)]public ushort wDay;
[FieldOffset(8)]public ushort wHour;
[FieldOffset(10)]public ushort wMinute;
[FieldOffset(12)]public ushort wSecond;
[FieldOffset(14)]public ushort wMilliseconds;
}
public class Program
{
public static void Main(string[] args)
{
// Create an instance of the type using the GetType method.
Type t = typeof(MySystemTime);
// Get and display the IsExplicitLayout property.
Console.WriteLine("\nIsExplicitLayout for MySystemTime is {0}.",
t.IsExplicitLayout);
}
}
open System.Runtime.InteropServices
// Class to test for the ExplicitLayout property.
[<StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)>]
type MySystemTime =
[<FieldOffset 0>] val public wYear: uint16
[<FieldOffset 2>] val public wMonth: uint16
[<FieldOffset 4>] val public wDayOfWeek: uint16
[<FieldOffset 6>] val public wDay: uint16
[<FieldOffset 8>] val public wHour: uint16
[<FieldOffset 10>] val public wMinute: uint16
[<FieldOffset 12>] val public wSecond: uint16
[<FieldOffset 14>] val public wMilliseconds: uint16
// Create an instance of the type using the GetType method.
let t = typeof<MySystemTime>
// Get and display the IsExplicitLayout property.
printfn $"\nIsExplicitLayout for MySystemTime is {t.IsExplicitLayout}."
Imports System.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices
'Class to test for the ExplicitLayout property.
<StructLayout(LayoutKind.Explicit, Size := 16, CharSet := CharSet.Ansi)> _
Public Class MySystemTime
<FieldOffset(0)> Public wYear As Short
<FieldOffset(2)> Public wMonth As Short
<FieldOffset(4)> Public wDayOfWeek As Short
<FieldOffset(6)> Public wDay As Short
<FieldOffset(8)> Public wHour As Short
<FieldOffset(10)> Public wMinute As Short
<FieldOffset(12)> Public wSecond As Short
<FieldOffset(14)> Public wMilliseconds As Short
End Class
Public Class Program
Public Shared Sub Main()
'Create an instance of type using the GetType method.
Dim t As Type = GetType(MySystemTime)
' Get and display the IsExplicitLayout property.
Console.WriteLine(vbCrLf & "IsExplicitLayout for MySystemTime is {0}.", _
t.IsExplicitLayout)
End Sub
End Class
Açıklamalar
Bu özellik kolaylık sağlamak için sağlanmaktadır. Alternatif olarak, numaralandırma değerini kullanarak TypeAttributes.LayoutMask tür düzeni özniteliklerini seçebilir ve ardından ayarlanıp ayarlanmadığını TypeAttributes.ExplicitLayout test edebilirsiniz. TypeAttributes.AutoLayout, TypeAttributes.ExplicitLayoutve TypeAttributes.SequentialLayout numaralandırma değerleri, tür alanlarının belleğe yerleştirilip yerleştirılme şeklini gösterir.
Dinamik türler için, türü ne zaman oluşturabileceğinizi belirtebilirsiniz TypeAttributes.ExplicitLayout . Kodda, alanların başlatıldığı uzaklıkların açıkça belirtileceğini belirtmek için türüne numaralandırma değeriyle LayoutKind.Explicit özniteliğini uygulayınStructLayoutAttribute.
Not
bir türe GetCustomAttributes uygulanıp uygulanmadığını StructLayoutAttribute belirlemek için yöntemini kullanamazsınız.
Geçerli Type , bir genel tür oluşturulduysa, bu özellik türün oluşturulduğu genel tür tanımına uygulanır. Örneğin, geçerli Type değeri (MyGenericType(Of Integer)
Visual Basic'te) temsil MyGenericType<int>
ederse, bu özelliğin değeri tarafından MyGenericType<T>
belirlenir.
Geçerli Type , genel bir türün veya genel yöntemin tanımındaki bir tür parametresini temsil ederse, bu özellik her zaman döndürür false
.