由于原始帖子(Create List with name from variable)太旧了,所以我不想以此为答案。
但是,我想添加上述解决方案的用法,因为它对我而言并不明显。而且,这可能会帮助我的一些新手。此外,我遇到了一些我不知道该如何解决的问题。
我需要一种使用变量名创建列表的方法,在本例中为“ mstrClock”,用于时序图。
但是,我无法让.NET接受两列列表,所以我最终得到了两个字典。
是否有一种结构化方法,以便我可以在两列中使用单个字典?
dictD.Add("mstrClock", new List<double>());
dictL.Add("mstrClock", new List<string>());
然后,当我开发时序图时,我将添加到列表如下:
dictD["mstrClock"].Add(x); // This value will normally be the time value.
dictL["mstrClock"].Add("L"); // This value will be the "L", "F" or "H" logic level
然后获取我执行的数据:
for (int n = 0; n < dictD["mstrClock"].Count; n++)
{
listBox1.Items.Add(dictL["mstrClock"][n] + "\t" + dictD["mstrClock"][n].ToString());
}
答案 0 :(得分:0)
为什么不只在字典中存储要显示的内容?
dict.Add("mstrClock", new List<string>());
dict["mstrClock"].Add($"L\t{x}");
for (int n = 0; n < dict["mstrClock"].Count; n++)
{
listBox1.Items.Add(dict["mstrClock"][n]);
}
另一方面,您甚至需要一本字典吗?用一把钥匙的字典有什么意义?如果只需要List<string>
,则只需创建一个即可。
var items = new List<string>());
items.Add($"L\t{x}");
foreach (var item in items)
{
listBox1.Items.Add(item);
}
答案 1 :(得分:0)
您可以在现代C#中使用Tuples来创建您的两列列表,如下所示:
var list = new List<(double time, string logicLevel)>();
list.Add((1, "L"));
list.Add((2, "F"));
foreach (var element in list)
{
listBox1.Items.Add($"{element.time} \t {element.logicLevel}");
}
如果必须使用字典,则可以将上面的代码更改为:
var dict = new Dictionary<string, List<(double time, string logicLevel)>>();
dict["mstrClock"] = new List<(double time, string logicLevel)>();
dict["mstrClock"].Add((1, "L"));
dict["mstrClock"].Add((2, "F"));
var list = dict["mstrClock"];
foreach (var element in list)
{
listBox1.Items.Add($"{element.time} \t {element.logicLevel}");
}
答案 2 :(得分:0)
创建2列列表的一种方法是创建key/value pairs的列表:
var list = new List<KeyValuePair<double, string>();
list.Add(new KeyValuePair<double, string>(1, "L");
foreach (KeyValuePair<double, string> element in list)
{
listBox1.Items.Add($"{element.key} \t {element.value}");
}