[英]Getting the name of the variable in a foreach loop
我试图从表示字典 值的列表中获取变量的名称,以便我可以填充组合框。到目前为止,我尝试使用nameof
方法,但无法获取名称。
在我的示例中,我想用param1
, param2
, param3
填充组合框
const变量在另一个类Constants中 。
public const string param1 = "a";
public const string param2 = "b";
public const string param3 = "c";
public const string d = "d";
public const string e = "e";
public const string f = "f";
包含常量的列表字典
public static Dictionary<string, List<string>> formIdDict = new Dictionary<string, List<string>>
{
{singleParamFo,new List<string> {param1,param2,param3 } },
{PIDFo,new List<string> {d,e,f } }
};
麻烦的foreach
public SingleParamForm()
{
InitializeComponent();
foreach (var t in Constants.formIdDict[Constants.singleParamFo])
singleParamCombo.Items.Add(nameof(t));
}
我应该在foreach中指定哪种类型,因为我不能使用类似
foreach(nameof(var t) in ....)
不要使用List<string>
作为Dictionary的TValue,而是创建具有名称和值的类,或者使用List<Tuple<<string,string>>
,将nameof用作item1,将值用作item1。
public static IDictionary<string, List<Tuple<string,string>>> formIdDict =
new Dictionary<string, List<Tuple<string, string>>>
{
{singleParamFo, new List<Tuple<string,string>>
{
new Tuple<string,string>(nameof(param1), param1) //...
}
}
foreach (var t2 in Constants.formIdDict[Constants.singleParamFo])
singleParamCombo.Item.Add(t2.Item1);
然后只需将Tuple重构为具有有意义名称的类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.