数据结构,以消除c#中的多个哈希表
本文关键字:哈希表 数据结构 | 更新日期: 2023-09-27 18:00:38
我正在开发一个应用程序,在运行时在其中添加控件,为了跟踪这些控件,我正在维护单独的哈希表,以便以后可以轻松地使用它们。但我有大约6个哈希表,维护这些哈希表有点复杂。所以我想知道我是否可以把所有这些控件都放在一个数据结构中,但我应该很容易识别它们,就像在哈希表中一样。基本上,我想要的是hashtable的扩展版本,在那里我可以向一个键添加多个值。例如,我现在拥有的是
hashtable addButtons = new hashtable();
hashtable remButtons = new hashtable();
addButtons.add(name,b);
remButtons.add(name,r);
现在,如果我能做一些类似的事情,那就太酷了
addButtons.add(name=>(b,r,etc,etc));
然后像一样在哈希表中获取任何一个
addButtons[name][1]
有人能告诉我在c#中是否有可能发生这样的事情吗。
Dictionary<String, List<?>>
怎么样?
结合以下内容:
public static class Extensions
{
public static void AddItemsWithName<T>(this Dictionary<String, List<T>> this, string name, params T[] items)
{
// ...
}
}
会给你一些非常接近你想要的语法的东西。
不确定我是否正确理解了你的问题。像这样的东西?
var controlsDictionary = new Dictionary<string, List<Control>>();
var b1 = new Button();
var b2 = new Button();
controlsDictionary["AddButtons"] = new List<Control> { b1, b2 };
var firstButton = controlsDictionary["AddButtons"][0];
我会有一个类来表示6件事。。。
public class SomeType { // RENAME ME
public int AddButton {get;set;}
public string RemoveButton {get;set;}
public DateTime Some {get;set;}
public float Other {get;set;}
public decimal Names {get;set;}
public bool Here {get;set;}
} // ^^ names and types above just made up; FIX ME!
和一个Dictionary<string,SomeType>
-然后你可以:
yourField.Add(name, new SomeType { AddButton = ..., ..., Here = ... });
和
var remButton = yourField[name].RemoveButton;
听起来你想要一本字典,比如:
var d = new Dictionary<string, Dictionary<string, Control>>();
//Create new sub dictionary
d.Add("name1", new Dictionary<string, Control>());
//Add control
d["name1"].Add("btnOne", btnOne);
//Retrieve control
var ctrl = d["name1"]["btnOne"];