我想存储大量的3个左右的字节值的小项(好吧,几千个),所以我想使用一个结构。 我不确定的是如何将它保存为值类型,例如,如果我只将3个字节存储为字节并覆盖ToString(),GetHashCode()和Equals(),它将保持值类型,对吧? 但是,如果我想将3个字节作为列表返回(返回,而不是存储!),那么我做
public List<byte> GetValues
{
get
{
return new List<byte>(3) { byte1, byte2, byte3 };
}
}
..但现在这会搞砸了吗? 这个结构的数据部分现在是否在堆上?
我确实读过有关这些东西的地方,但我记不清楚在哪里,再也找不到了。
感谢你给我的任何建议。
理查德
答案 0 :(得分:2)
不,这只是一个属性 - 列表是在访问该属性时创建的,但这就是全部。您尚未在类型中声明任何额外的字段。
即使您 声明了List<byte>
类型的字段,您的类型仍然是值类型 - 所有结构都是值类型 - 它就是那样其中一个字段的值为参考值。这种情况相对不常见,但并非闻所未闻。