Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#字典还是继续使用列表?_C# - Fatal编程技术网

C#字典还是继续使用列表?

C#字典还是继续使用列表?,c#,C#,我使用一个列表来存储一对十六进制值(例如,在列表AD38F2D8中,显示为:Value_a:AD 38 F2D8) 我的问题是我应该使用字典还是应该使用字典将十六进制字符串存储为一对字符串。(值:[AD,38,F2,D8]),而不是(值:AD38F2D8) 这可能不会对两者造成太大的区别 使用Dictionary我只需将每个十六进制字符串存储在Dictionary中,然后在需要时将它们分成各自的对。 如果我使用字典,我会首先将十六进制字符串拆分成各自的对,然后将它们存储在字典中 我的问题是我应该

我使用一个列表来存储一对十六进制值(例如,在列表AD38F2D8中,显示为:Value_a:AD 38 F2D8)

我的问题是我应该使用
字典
还是应该使用
字典
将十六进制字符串存储为一对字符串。(值:[AD,38,F2,D8]),而不是(值:AD38F2D8)

这可能不会对两者造成太大的区别

使用
Dictionary
我只需将每个十六进制字符串存储在Dictionary中,然后在需要时将它们分成各自的对。 如果我使用
字典
,我会首先将十六进制字符串拆分成各自的对,然后将它们存储在字典中

我的问题是我应该用哪一个?还是我应该继续使用列表

我并不完全需要使用
字典
,因为我仍然知道哪个索引上有哪个字符串,只是这样看起来会更好

列表示例:

Index = 0,  Value = 3D95FF08
Index = 1,  Value = 8D932A08
字典
示例:

Index = 0, Key = First,  Value = 3D95FF08
Index = 1, Key = Second, Value = 8D932A08
Index = 0, Key = First,  Value = 3D, 95, FF, 08
Index = 1, Key = Second, Value = 8D, 93, 2A, 08
字典
示例:

Index = 0, Key = First,  Value = 3D95FF08
Index = 1, Key = Second, Value = 8D932A08
Index = 0, Key = First,  Value = 3D, 95, FF, 08
Index = 1, Key = Second, Value = 8D, 93, 2A, 08
注意:每个字典示例中的索引值只是为了显示对其他字典的共同响应,我知道字典没有索引值,而是使用键。这只是让我们更容易看这个例子

我在这里找到了最后一个字典字符串: 我一直在搜索它,因为我在编写python代码时曾多次使用过这种方法。通过在字典中存储字符串列表

提前感谢您的帮助

编辑

列表或字典中的每个字符串都将拆分为各自的字节。 例如

字节0将保存索引 字节1将保存引用 字节2标记 字节3至6:成员编号

因此,如果我在可能将它们放入字典之前将它们拆分,我不必在将它们用于各自的位置之前进行拆分,因为我必须将它们拆分以计算索引、引用和标志

数据库是以这种格式提供给我的,我被迫以目前的方式使用它,因此我无法更改它。只能使我的代码适应它

上述示例将输出为:

Index  Reference Link    Flags          Memb_Number_ID
173     18               +A             John (ID: 34205)

字典不公开索引,它们没有这个概念。我会坚持一个清单:

列出myhexvalue

如果需要搜索,可以使用LINQ。仅当需要基于定义的键进行快速访问时才使用字典

您还没有真正说明打算如何使用集合,因此目前还没有人能真正告诉您使用其中一个,我只是根据您想要索引值的事实进行猜测

更新:如果您想更方便地访问十六进制值的元素,您可以使用或将值包装在自定义类型中,并公开不同部分的属性(您在
struct
vs
class
上的选择取决于我假设的值),然后将该类型粘贴到列表中

如果创建自己的类型,如果希望获得以下语法,则可以:


myCustomType[indexKey]=值

如果需要将两个(或多个)值相互关联,则需要一个。字典是不必要的,因为您没有将其中一个值用作查找(键)。。。是吗

根据我认为你们的情况,我想说的是元组的集合(列表很好)


另外,为什么要将十六进制值存储为字符串?您可以将其保留为整数,并使用
String.Format({0:X},value)将其显示为十六进制字符串。

为什么不立即将十六进制字符串解析为真实对象?您已经演示了对象的外观(包括索引、引用链接等)。我个人会把它直接解析成一个记录对象(或类似的东西),然后将它们存储在一个列表中。通过这种方式,查询它们比存储十六进制字符串或十六进制字符串数组或其他更直观的格式要容易得多

你为什么考虑改用字典?带列表的代码不起作用吗?如果您让我们知道您打算如何使用该集合,会有人提供代码示例和建议。目前,您只告诉了我们您正在存储什么,而没有告诉我们您打算以后如何访问它。带有列表的代码运行良好,我只是在寻找一种方法使其更易于使用。每个十六进制值作为一个字符串存储在数据库中,但如上所述,该字符串中的每一组字符都有自己的含义,因此将其与拆分对放在字典中可能会更容易显示信息。实际上,索引只是为了显示与列表的对应关系。我不需要索引。只是我喜欢myhexvalues[0]或myhexvalues[1]。或者各自的字典method@Raskaroth您希望如何使用该集合?暂时忽略您最终将使用的集合。您想键入信息还是迭代?如果您想“索引”它们,例如,使用一个不是字典“键”的值,那么您不能,您需要使用索引。我添加了额外的信息,希望这能解释得更清楚。谢谢,我认为使用矩形数组最适合该程序。因为最初它以二进制形式存储在数据库中,我使用的方法如下所述:。这几乎是该代码的延续,刚才我将其拆分以进一步使用它。它是有效的,但我正在寻找一种更有效的方法。不,我没有使用键来查找值,我不一定要这样做。不过忘了tuple,谢谢你的提醒!tuple不起作用,因为十六进制值是一个接一个地存储的,因此如果数据库中存储了8个字符串,每个字符串包含8对十六进制值。然后我会有一个元组:8*(8*2)=128个值。