首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么`System.Nullable<T>`类型具有“`StructLayout(LayoutKind.Sequential)”属性?

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

Stack Overflow用户
提问于 2020-02-08 13:34:27
回答 1查看 91关注 0票数 1

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

我在CLR中通过C#图书找到了以下文本和代码:

以下是定义System.Nullable类型的逻辑表示:

代码语言:javascript
复制
[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>类型的属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-08 13:39:45

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

您可以在.NET框架(源这里)中看到这一点:

代码语言:javascript
复制
    [Serializable]
    [System.Runtime.Versioning.NonVersionable] // This only applies to field layout
    public struct Nullable<T> where T : struct
    {

对于.NET Core (源这里):

代码语言:javascript
复制
    [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
    {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60127279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档