Получить ключ в индексе с помощью цикла For - PullRequest
0 голосов
/ 25 октября 2018

Мне кажется, что я, должно быть, упускаю что-то очень очевидное, или C # просто не хватает функции, на которую я рассчитывал.

Обычно в * 3 * 5 * есть три цикла.программирование.

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

Увеличивает iterator после каждого цикла, пока не достигнет предела.

#2 for (key in object) {}

Назначает key значение левой половины пары key:value при каждой записи объекта.

# 3 foreach (value in object) {}

Назначает value значение правой половины пары key:value при каждой записи объекта.

Я знаю, что foreach может использовать KeyValuePair<TKey,TValue>, но для этого необходимо присвоить гораздо большую переменную ссылку на key и value.Меня не волнует значение, и я не хочу его вводить.

Где # 2 for in для C #?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

В дополнение к @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]);
0 голосов
/ 25 октября 2018

Вы можете сделать 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 ... но, конечно, это будетневозможно получить соответствующий ключ.

...