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

Ras*_*oth 5 c#

我正在使用列表来存储一对十六进制值(例如,在列表AD38F2D8中,显示为:Value_A:AD 38 F2 D8).

我的问题是我应该使用Dictionary<string, string>或者我应该使用 Dictionary<string, NewCustomObject>十六进制字符串作为一对字符串存储.(值:[AD,38,F2,D8])而不是(值:AD38F2D8).

它可能不会在两者之间产生很大的差异.

随着Dictionary<string, string>我只想存储在字典中的每个十六进制字符串,然后拆了他们在各自的对,当我需要他们.如果我使用的话,Dictionary<string, NewCustomObject>我最终会先将十六进制字符串拆分成各自的对,然后将它们存储在字典中.

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

我并不完全有必要使用,Dictionary<string, string>因为我仍然知道哪个索引是什么字符串,只是它会看起来更好.

列表示例:

Index = 0,  Value = 3D95FF08
Index = 1,  Value = 8D932A08
Run Code Online (Sandbox Code Playgroud)

Dictionary<string, string> 例:

Index = 0, Key = First,  Value = 3D95FF08
Index = 1, Key = Second, Value = 8D932A08
Run Code Online (Sandbox Code Playgroud)

Dictionary<string, NewCustomObject> 例:

Index = 0, Key = First,  Value = 3D, 95, FF, 08
Index = 1, Key = Second, Value = 8D, 93, 2A, 08
Run Code Online (Sandbox Code Playgroud)

注意:每个字典示例中的索引值只是为了显示与其他字典的对应关系,我知道字典没有索引值,而是使用键.它只是让你更容易看到这个例子.

我在这里遇到了最后一个字典字符串:C#Dictionary,每个键有两个值? 我正在搜索它,因为我在编写python代码时已经多次使用过这种方式.通过在字典中存储字符串列表.

在此先感谢您的帮助!

编辑

列表或字典中的每个字符串将按其各自的字节进行拆分.例如.

BYTE   0   1   2   3 to  6 .....
HEX    AD  12  01  0000859D  .....
Run Code Online (Sandbox Code Playgroud)

字节0将保持索引字节1将保持参考字节2标志字节3至6:Memb_Number_ID

因此,如果我将它们拆分之前可能会将它们放入字典中,那么在我在各自的位置使用它们之前我不必这样做,因为我必须将它们拆分以计算索引,引用和标志.

数据库是以这种格式提供给我的,我被迫以目前的方式使用它,所以我无法改变它.并且只能调整我的代码.

以上示例将输出为:

Index  Reference Link    Flags          Memb_Number_ID
173     18               +A             John (ID: 34205)
Run Code Online (Sandbox Code Playgroud)

Ada*_*rth 4

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

List<NewCustomObject> myHexValues;

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

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

更新:如果您想更轻松地访问十六进制值的元素,您可以使用矩形数组或将值包装在自定义类型中,并公开不同部分的属性(您对structvs 的选择class取决于我认为的值),然后将该类型粘贴到列表中。

如果您创建自己的类型,并且希望获得以下语法,则可以公开索引器:

myCustomType[indexKey] = value;