我正在开发一个应用程序,其中我在运行时添加控件并跟踪这些控件我正在维护单独的哈希表,以便我以后可以轻松地执行我想要的操作。但是我有大约6个哈希表并且维护它们有点复杂。所以我想知道我是否可以将所有这些控件都放在一个数据结构中,但我应该很容易识别它们,就像我在哈希表中一样。基本上我想要的是哈希表的扩展版本,我可以在一个键中添加多个值。例如,我现在拥有的是
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#中告诉我这样的事情是否可行。
答案 0 :(得分:3)
Dictionary<String, List<?>>
怎么样?
结合这样的事情:
public static class Extensions
{
public static void AddItemsWithName<T>(this Dictionary<String, List<T>> this, string name, params T[] items)
{
// ...
}
}
会给你一些非常接近你正在寻找的语法的东西。
答案 1 :(得分:2)
不确定我是否正确理解了您的问题。像这样的东西?
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];
答案 2 :(得分:1)
我会有一个代表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;
答案 3 :(得分:1)
听起来你想要一本词典词典,比如:
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"];