将结构保留为值类型-我可以使用/返回哪些类型

本文关键字:类型 返回 可以使 保留 结构 我可以 | 更新日期: 2023-09-27 18:29:03

我想存储很多3个字节左右值的小项目(好吧,几千个),所以我想使用结构。我不确定的是如何将其保持为值类型,例如,如果我只是将3个字节存储为字节并重写ToString()、GetHashCode()和Equals(),它将保持为值型,对吗?但是,如果我想将3个字节作为列表返回(返回,而不是存储!),那么我做呢

public List<byte> GetValues
    {
      get
        {
             return new List<byte>(3) { byte1, byte2, byte3 };
        }
    }

但现在会不会搞砸了?这个结构的部分数据现在会在堆上吗?

我确实读过一些关于这些东西的文章,但我不记得在哪里,也找不到了。

谢谢你给我的任何建议。

Richard

将结构保留为值类型-我可以使用/返回哪些类型

不,这只是一个属性-列表是在访问该属性时创建的,但仅此而已。您尚未在类型中声明任何额外的字段

即使声明了类型为List<byte>的字段,您的类型仍然是值类型-所有结构都是值类型,只是其中一个字段的值是引用。这种情况相对少见,但并非闻所未闻。