使用For Loop

时间:2018-10-25 16:57:04

标签: c# for-loop key

我觉得好像我必须错过一些非常明显的东西,或者C# is simply lacking我所期望的功能。

编程中通常有三个for循环。

#1 for (iterator; limit; increment) {}

在每次循环后递增iterator,直到达到极限为止。

#2 for (key in object) {}

在对象的每个条目处分配key对的左半部分的值。

#3 key:value

在对象的每个条目处为foreach (value in object) {}对的{strong>右半值分配value

我知道key:value可以使用KeyValuePair<TKey,TValue>,但这需要为foreach {{1} }。我不在乎该值,也不需要对它进行数据类型化。

C##2 key在哪里?

2 个答案:

答案 0 :(得分:1)

您可以执行foreach (var key in object.keys)(假设对象是Dictionary):

  Dictionary<object, object> dict = new Dictionary<object, object>();
  foreach (var key in dict.Keys)
  {
    var value = dict[key]; //Not required
  }

您也可以遍历Values而不是Keys ...,但是当然不可能检索相应的密钥。

答案 1 :(得分:0)

除@MikeH外,

如果您打算遍历纯对象以获取变量名作为键,并将其值作为值,则可以通过反射来实现。这是例子

public class Test
{
    public string Prop1 {get; set;}
    public string Prop2 {get; set;}
    public string Prop3 {get; set;}
    public string Prop4 {get; set;}
}

public class Program
{
    public static void Main()
    {
            var test = new Test(){
                Prop1 = "Test1",
                Prop2 = "Test2",
                Prop3 = "Test3",
                Prop4 = "Test4"
            };

            foreach (var property in test.GetType().GetProperties())
            {
                Console.WriteLine("{0} = {1}", property.Name, property.GetValue(test));
            }
    }
}

此外,如果您想再次使用字典,可以使用

var dict = test.GetType().GetProperties().ToDictionary(x => x.Name, x=> x.GetValue(test));
foreach (var key in dict.Keys)
    Console.WriteLine("{0} = {1}", key, dict[key]);