为什么System.Nullable<T>类型具有StructLayout(LayoutKind.Sequential)属性?
我在CLR中通过C#图书找到了以下文本和代码:
以下是定义System.Nullable类型的逻辑表示:
[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>类型的属性。
发布于 2020-02-08 13:39:45
它实际上没有那个属性。如果这本书写的时候是这样的话,现在就不再是了。
您可以在.NET框架(源这里)中看到这一点:
[Serializable]
[System.Runtime.Versioning.NonVersionable] // This only applies to field layout
public struct Nullable<T> where T : struct
{对于.NET Core (源这里):
[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
{https://stackoverflow.com/questions/60127279
复制相似问题