Перебор имен переменных с помощью цикла for

Я пытаюсь использовать цикл for для перебора ряда имен переменных, каждое из которых заканчивается числом от 1 до 10. Я видел несколько других ответов на этот вопрос, но не смог ничего сделать для моей конкретной ситуации. Мой код выглядит следующим образом:

        string cat2Pos0 = cat2[0];
        int numOfPos0 = cat2.Where(x => x.Equals(cat2Pos0)).Count();
        List<int> indexOfPos0 = new List<int>();
        bool check = cat2.Contains(cat2Pos0);
        int index = 0;
        if (check == true)
        {
            for (int i = 0; i < numOfPos0; i++)
            {
                index = cat2.FindIndex(x => x == cat2Pos0);
                indexOfPos0.Add(cat2.IndexOf(cat2Pos0));
            }
        }
        else if (cat2Pos0 == "-")
        {
            numOfPos0 = 17;
        }

Мне нужно перебрать 10 имен переменных cat1 - cat10. В коде: всякий раз, когда есть фраза «кошка», мне нужно иметь возможность настроить ее в зависимости от цикла for, например. кат1 или кат5:

string cat3pos0 = cat3[0];

or:

index = cat3.FindIndex(x => x == cat3Pos0);

К сожалению, я не могу просто написать каждую вариацию по отдельности, поскольку это потребовало бы почти 3700 строк кода, и я надеялся, что будет лучший способ добиться этого.

Большое спасибо, любая помощь очень ценится,

Джош


person Josh    schedule 03.05.2020    source источник
comment
написать метод и передать в него cat2[] или cat3[], не сработает?   -  person urlreader    schedule 03.05.2020


Ответы (1)


См. здесь, как использовать отражение для этого. (что-то вроде this.GetType().GetField("cat" + i.ToString());.)

Но я бы действительно предложил изменить ваши переменные на один массив из 10 переменных. Таким образом, cat будет массивом массивов (поскольку ваши cat кажутся массивами).

person ispiro    schedule 03.05.2020