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

时间:2012-03-23 22:13:25

标签: c# struct types

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

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

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

我确实读过有关这些东西的地方,但我记不清楚在哪里,再也找不到了。

感谢你给我的任何建议。

理查德

1 个答案:

答案 0 :(得分:2)

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

即使您 声明了List<byte>类型的字段,您的类型仍然是值类型 - 所有结构都是值类型 - 它就是那样其中一个字段的值为参考值。这种情况相对不常见,但并非闻所未闻。