C # Динамически ссылаться на объекты в цикле - PullRequest
1 голос
/ 09 июня 2010

Я не знаю, возможно ли это или нет.Я хочу сослаться на DataTable (и другие объекты, но работа с одним упростит все остальное) и использовать его в качестве параметра, но я хочу сделать это в цикле, чтобы я мог выполнитьфункция с каждой DataTable dt1, dt2, dt3 и т. д. Примерно так (хотя это, очевидно, не работает):

for (int i = 0; i <= max; i++)
{
    Load("dt"+i);
}

Возможно ли это на самом деле?

Ответы [ 4 ]

5 голосов
/ 09 июня 2010

Вставьте все свои DataTable в массив:

var dataTables = new[] { dt1, dt2, dt3 };
foreach(var dt in dataTables)
    // ...
1 голос
/ 09 июня 2010

Рекомендую использовать метод, предложенный Антоном Гоголевым.Однако вы можете делать это так, как хотите, используя пространство имен ' System.Reflection '.Вот пример.Обратите внимание, что DataTable члены должны быть public, чтобы GetField работал.

public DataTable dt0 = new DataTable();
public DataTable dt1 = new DataTable();
public DataTable dt2 = new DataTable();

public void findall()
{
    DataTable temp;
    for (int i = 0; i < 3; i++)
        temp = (DataTable)this.GetType().GetField("dt" + i.ToString()).GetValue(this);
}
0 голосов
/ 09 июня 2010
foreach( var dt in new List<int>() { dt1,dt2,dt3,dt4,dt5 })
{
 // do something   
}
0 голосов
/ 09 июня 2010

Да, это возможно сделать. Если вы можете ссылаться на них во время компиляции, вы можете поместить их в массив, как сказал Антон. В противном случае вы должны использовать Reflection для работы с ними. В любом случае экземпляры DataTable должны храниться где-то в некоторой переменной. Можете ли вы дать немного больше контекста? Откуда приходят таблицы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...