我需要存储大量数据。我需要识别“null”+ 0-3。基本上我需要区分5个身份。例如“无”,“向左”,“向上”,“向右”,“向下”。在C#中存储这个的好方法是什么?目前我认为它可能是sbyte但我希望有一个“更小”的解决方案。
答案 0 :(得分:3)
我找不到任何直接来自Microsoft的文档来支持这一点,但我相当确定没有一个小于一个字节(或sbyte)的独立类型可以容纳5个不同身份中的一个。
以下是Stack Overflow问题,其答案支持此问题:Is there a .NET data-type smaller than a byte?
答案 1 :(得分:1)
sbyte / byte是C#中的最小单位,除非您创建自己的数据结构,例如使用一个值来存储多个项目,例如使用3位位置来存储一个项目,因此Int16可以存储5个项目。
另一方面,如果不追求空间效率的极端,建议使用枚举来存储有意义的值,并且可以使用byte作为枚举,以便节省空间:
enum Direction : byte {Nothing=0, Left, Up, Right, Down};
这将使代码更清晰。