Цитата(neprofi @ 7.4.2009, 17:53 ) | | Н-р у меня есть 4 функции такого плана |
Если все ваши 4 ф-ии одинаковые, т.е. имеют одинаковое число и тип параметров и если я правильно вас понял, то вот пример:
| Код | // допустим вот такие 4 ф-ии у тебя private double f1(double x, double[] y, int n) { return 1; } private double f2(double x, double[] y, int n) { return 2; } private double f3(double x, double[] y, int n) { return 3; } private double f4(double x, double[] y, int n) { return 4; }
// объвляем делегат для них (вместо этого, можно было бы использовать дженерик делегат Func<double, double[], int, double>) delegate double MyFuncHandler(double x, double[] y, int n);
// тестовый метод, который создает объединенный делегат на ф-ии f1, f2, f3, f4 private void button1_Click(object sender, EventArgs e) { MyFuncHandler allFunctions = (MyFuncHandler)Delegate.Combine((MyFuncHandler)f1, (MyFuncHandler)f2, (MyFuncHandler)f3, (MyFuncHandler)f4);
// Вызываем все ф-ии одним вызовом. В result будет результат только последней ф-ии (f4 в данном случае) double result = allFunctions(0, null, 0);
// Если нужно знать результат каждого вызова, то тогда так foreach (MyFuncHandler func in allFunctions.GetInvocationList()) result = func(0, null, 0); }
|
|