为什么 `System.Nullable<T>` 类型具有 `StructLayout(LayoutKind.Sequential)` 属性?

Why does the `System.Nullable<T>` type has the `StructLayout(LayoutKind.Sequential)` attribute?

为什么 System.Nullable<T> 类型具有 StructLayout(LayoutKind.Sequential) 属性?

我在 CLR via C# 一书中找到了以下一段文字和代码:

Here is the logical representation of how the System.Nullable type is defined:

[Serializable, StructLayout(LayoutKind.Sequential)]
public struct Nullable<T> where T : struct { 
   //... unrelated to the question code
}

那么,为什么 System.Nullable<T> 应用 StructLayout(LayoutKind.Sequential) 属性合乎逻辑?我相信如果有人只解释添加属性的情况(或情况)(即它的作用是什么),就足以回答我的问题了。

我了解该属性的作用。我不明白为什么必须具有 System.Nullable<T> 类型的属性。

它实际上没有那个属性。如果在写这本书的时候是这样,现在就不是了。

您可以自己查看 .NET Framework(来源 here):

    [Serializable]
    [System.Runtime.Versioning.NonVersionable] // This only applies to field layout
    public struct Nullable<T> where T : struct
    {

对于 .NET Core(来源 here):

    [Serializable]
    [NonVersionable] // This only applies to field layout
    [System.Runtime.CompilerServices.TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
    public partial struct Nullable<T> where T : struct
    {