.NET 4.x интерфейс, передача функции в параметре - C#

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте. У меня возникла следующая проблема. До этого я ни когда не работал с интерфейсами. Есть интерфейс и функция, которая по нему выполняет расчет. Я реализовал интерфейс(функцию). И потом пытаюсь передать функцию в качестве параметра в другую функцию, что я делаю не так?
 
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);
...
Ошибка 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 РасчетТурбины

Решение задачи: «.NET 4.x интерфейс, передача функции в параметре»

textual
Листинг программы
double d = MathUtil.HalfSegmentCalc(new FunRunCalc_1(), 0, 100000000, 1);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы