为什么 `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
{
为什么 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
{