繁体   English   中英

在foreach循环中获取变量的名称

[英]Getting the name of the variable in a foreach loop

我试图从表示字典 列表中获取变量的名称,以便我可以填充组合框。到目前为止,我尝试使用nameof方法,但无法获取名称。
在我的示例中,我想用param1param2param3填充组合框

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM