Если у вас есть переменные p1
, p2
и вы хотите ссылки их, используя номер, а затем:
Решение 1, создать вспомогательный метод
string PX(int number)
{
switch(number)
{
case 1: return p1;
case 2: return p2;
}
// or
if(number == 1) return p1;
if(number == 2) return p2;
}
// usage
PX(x).Contains(blablabla);
Solution 2, использование индексов
// helper array
string[] px = new string[] {p1, p2};
// usage
px[i - 1].Contains(blablabla);
или
// helper array
string[] px = new string[] {null, p1, p2};
// usage
px[i].Contains(blablabla);
Решение 3, используйте коллекции ключей.
Решение 4, используйте отражение.
Решения 3 и 4 более медленные и с излишними накладными расходами. Индексы быстры, имеющие вспомогательный метод или вспомогательный массив не слишком много, рассмотрим следующие свойства при построении
private string[] _px = string[2];
public string[] PX { get { return px; } }
public string P1
{
get { return _px[0]; }
set { _px[0] = value; }
}
public string P2
{
get { return _px[1]; }
set { _px[1] = value; }
}
Таким образом, данные сначала сохраняются в массиве = вы не тратите память, имея при этом возможность доступа к значениям по индекс PX[index]
или по названию P1
/P2
.
Что такое p1 и p2? – BlackBear
Дайте нам большую картинку: чего вы пытаетесь достичь? – dcastro
Далеко не очевидно, чего вы пытаетесь достичь здесь, но если вы хотите ссылаться на локальные переменные на строковое представление своего «имени», вам, вероятно, лучше хранить свои списки в строке «Словарь <строка», список> '. –