英語で読む

次の方法で共有


Type.StructLayoutAttribute プロパティ

定義

現在の型のレイアウトを説明する StructLayoutAttribute を取得します。

C#
public virtual System.Runtime.InteropServices.StructLayoutAttribute? StructLayoutAttribute { get; }
C#
public virtual System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get; }

プロパティ値

StructLayoutAttribute

現在の型のレイアウト機能全体を説明する StructLayoutAttribute を取得します。

例外

呼び出されたメソッドは基底クラスでサポートされていません。

次のコード例では、まず、クラス、構造体、および特殊なレイアウト属性を持つ 構造体を定義します (構造体は クラス内で入れ子にされています)。 次に、 プロパティを使用して各型の を取得し StructLayoutAttribute StructLayoutAttribute 、属性のプロパティを表示します。

C#
using System;
using System.Runtime.InteropServices;

public class Example
{
    public static void Main()
    {
        DisplayLayoutAttribute(typeof(Example).StructLayoutAttribute);
        DisplayLayoutAttribute(typeof(Test1).StructLayoutAttribute);
        DisplayLayoutAttribute(typeof(Test2).StructLayoutAttribute);
    }

    private static void DisplayLayoutAttribute(StructLayoutAttribute sla)
    {
        Console.WriteLine("\r\nCharSet: "+sla.CharSet.ToString()+"\r\n   Pack: "+sla.Pack.ToString()+"\r\n   Size: "+sla.Size.ToString()+"\r\n  Value: "+sla.Value.ToString());
    }
    public struct Test1
    {
        public byte B1;
        public short S;
        public byte B2;
    }
    [StructLayout(LayoutKind.Explicit, Pack=1)] public struct Test2
    {
        [FieldOffset(0)] public byte B1;
        [FieldOffset(1)] public short S;
        [FieldOffset(3)] public byte B2;
    }
}

注釈

StructLayoutAttribute は メソッドによって返 GetCustomAttributes されません。 代わりに、このプロパティを使用して取得します。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

こちらもご覧ください