.NET 4.x интерфейс, передача функции в параметре - C#
Формулировка задачи:
Всем здравствуйте. У меня возникла следующая проблема. До этого я ни когда не работал с интерфейсами.
Есть интерфейс и функция, которая по нему выполняет расчет.
Я реализовал интерфейс(функцию).
И потом пытаюсь передать функцию в качестве параметра в другую функцию, что я делаю не так?
Ошибка 1 Наиболее подходящий перегруженный метод для "РасчетТурбины.MathUtil.HalfSegmentCalc(РасчетТурбины.IMainFunc, double, double, double)" имеет несколько недопустимых аргументов D:\UserFiles\Мои документы\Visual Studio 2012\Projects\РасчетТурбины\РасчетТурбины\Calculete.cs 216 24 РасчетТурбины
Ошибка 2 Аргумент "1": преобразование типа из "группа методов" в "РасчетТурбины.IMainFunc" невозможно D:\UserFiles\Мои документы\Visual Studio 2012\Projects\РасчетТурбины\РасчетТурбины\Calculete.cs 216 49 РасчетТурбины
public interface IMainFunc { double MainFunc(double x); } class MathUtil { public static int HalfSegmentCalc(IMainFunc _imf, double xa, double xb, double Epsilon) { double ya; double yb; double yc, xc; do { ya = _imf.MainFunc(xa); yb = _imf.MainFunc(xb); ... return (int) ((xa + xb) / 2); if (ya * yb > 0) { throw new Exception("Нет корней."); } .... yc = _imf.MainFunc(xc); .... } while (true); } } ..... ..... public class FunRunCalc_1 : IMainFunc { public double MainFunc(double x) { double N_p_gg = Calculete.m_o * (x + Calculete.del_p_mag_o - Calculete.p_1_o) / (Calculete.kpd_n_o * Calculete.ro_o) + Calculete.m_g * (x + Calculete.del_p_mag_g - Calculete.p_1_g) / (Calculete.kpd_n_g * Calculete.ro_g); double N_t_p_gg = Calculete.R * Calculete.T_0 * (1 - Math.Pow((Calculete.p_k + Calculete.del_p_mag_t2) / (x - Calculete.del_p_mag_t1), (Calculete.k - 1) / Calculete.k)) * Calculete.m_t * Calculete.kpd_t * Calculete.k / (Calculete.k - 1); return N_p_gg - N_t_p_gg; } } .... //и потом пытаюсь передать MainFunc в другую функцию double d = MathUtil.HalfSegmentCalc(FunRunCalc_1.MainFunc, 0, 100000000, 1); ...
Решение задачи: «.NET 4.x интерфейс, передача функции в параметре»
textual
Листинг программы
double d = MathUtil.HalfSegmentCalc(new FunRunCalc_1(), 0, 100000000, 1);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д