rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 8.0 - 構築された構造体型もアンマネージド型

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

構築された構造体型もアンマネージド型

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/unmanaged-types
 フィールド全てがアンマネージド型の場合、ジェネリック構造体がアンマネージドになる。

unsafe
{
    // エラーにならない
    Console.WriteLine(sizeof(MyType<int>));

    // エラー CS0208  マネージ型('MyType<object>') のアドレスの取得、サイズの取得、またはそのマネージ型へのポインターの宣言が実行できません
    Console.WriteLine(sizeof(MyType<Object>));
}

struct MyType<T>
{
    public T Value;
}