#c_sharp
Как сделать так чтобы функция FillListStart принимала в качестве аргумента функцию TableRoTic private void FillListTar(List> sortListArray1, List
> sortListArray2, string nameTar, bool flag) { namesTar.Add(nameTar); dtTar.Add(new DataTable()); tarIndex++; dtTar[tarIndex] = TableRoTic(); DataRow newRow = null; if (flag == true) { for (int i = 0; i < sortListArray1.ElementAt(0).Count; i++) { newRow = dtTar.ElementAt(tarIndex).NewRow(); newRow["rho0"] = sortListArray1.ElementAt(0).ElementAt(i).ToString(); newRow["tic"] = sortListArray2.ElementAt(1).ElementAt(i).ToString(); dtTar.ElementAt(tarIndex).Rows.Add(newRow); } } else { for (int i = 0; i < sortListArray1.ElementAt(0).Count; i++) { newRow = dtTar.ElementAt(tarIndex).NewRow(); newRow["rho0"] = sortListArray1.ElementAt(0).ElementAt(i).ToString(); newRow["tic"] = sortListArray2.ElementAt(0).ElementAt(i).ToString(); dtTar.ElementAt(tarIndex).Rows.Add(newRow); } } } private DataTable TableRoTic() { //создаём таблицу DataTable dtRoTic = new DataTable(); //создаём три колонки //DataColumn a0 = new DataColumn("a0", typeof(Double)); DataColumn ro = new DataColumn("rho0", typeof(String)); DataColumn tic = new DataColumn("tic", typeof(String)); dtRoTic.Columns.Add(ro); dtRoTic.Columns.Add(tic); return dtRoTic; }
Ответы
Ответ 1
Попробуйте воспользоваться делегатами. Если вкратце - это как раз объект, содержащий в себе ссылку на метод. Примерно так будет выглядеть код в Вашем случае: // Объявляем тип делегата delegate DataTable SomeDelegat(); static void Main(string[] args) { // Создаем делегает, который ссылается на нужный метод SomeDelegat sd = new SomeDelegat(GetTable); // Вызываем метод с делегатом в качестве аргумента FillListTar(sd); } // Объявляем метод, на входе которому подается делегат private void FillListTar(SomeDelegat sd) { sd.Invoke(); // Выполнение метода делегата } private static DataTable TableRoTic() { DataTable dtRoTic = new DataTable(); // Какой-то нужный код return dtRoTic; }Ответ 2
Два метода: Определить свой делегат delegate DataTable TableDelegate(); private void FillListTar( TableDelegate func, List> sortListArray1, List
> sortListArray2, string nameTar, bool flag) { ... } Либо, воспользоваться предопределенным делегатом Func
private void FillListTar( Func func, List > sortListArray1, List
> sortListArray2, string nameTar, bool flag) { ... } Ну и вызов: FillToStart(TableRoTic, ...); Более подробно о Func
можно почитать здесь
Комментариев нет:
Отправить комментарий