我如何在c#中创建一个多值字典?
例如Dictionary<T,T,T>,第一个T是键,其他两个是值.
所以这是可能的: Dictionary<int,object,double>
谢谢
我几乎不好意思问这个问题,但作为很长一段时间的C程序员,我觉得也许我不知道在C#中做到这一点的最好方法.
我有一个成员函数,我需要返回两个自定义类型(List<MyType>)的列表,我事先知道,我将始终只有两个这样的列表的返回值.
显而易见的选择是:
public List<List<MyType>> ReturnTwoLists();
Run Code Online (Sandbox Code Playgroud)
要么
public void ReturnTwoLists(ref List<MyType> listOne, ref List<myType> listTwo);
Run Code Online (Sandbox Code Playgroud)
两者似乎都不是最优的.
关于如何改进这个的任何建议?
第一种方法并没有在语法中明确表示只返回2个列表,第二种方法使用引用而不是返回值,这看起来非c#.
我有一组看起来像这样的数据:
001 001 One
001 002 Two
001 003 Three
002 001 One
002 002 Two
002 003 Three
...
Run Code Online (Sandbox Code Playgroud)
现在,当然,我可以创建一个string [x] [y] = z的数组,但是这个数组必须是可调整大小的,我更喜欢使用索引器的字符串表示而不是转换为数字.原因是我需要按字符串查找数据,而且我没有看到不必要的字符串 - >数字转换的重点.
我的第一个想法是:
Dictionary<string, Dictionary<string, string>> data;
data = new Dictionary<string, Dictionary<string, string>>();
Dictionary<string, string> subdata = Dictionary<string, string>();
subdata.Add(key, string);
data.add(key2, subdata);
Run Code Online (Sandbox Code Playgroud)
这有效,但有点麻烦.它也感觉错误和kludgy,并不是特别有效.
那么在集合中存储这种数据的最佳方法是什么?
我还想过创建我自己的集合类,但是如果我不需要的话我宁愿不去.我宁愿只使用现有的工具.
我正在使用列表来存储一对十六进制值(例如,在列表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 …Run Code Online (Sandbox Code Playgroud)