ВУЗ:
Составители:
Рубрика:
68
Здесь определяется переменная f как указатель на функцию, которая
возвращает значение типа double и имеет один аргумент типа double.
Присвоим переменной f адрес функции вычисления синуса:
f = Math.Sin;
Таким же образом можно было присвоить переменной f адрес любой
из вышеперечисленных функций.
Далее вызывать функцию вычисления синуса можно через переменную
f:
double y = f(3.1415926); // вызов функции sin(3.1415926)
Делегаты могут выступать в качестве полей класса. Приведем пример
использования делегата в классе Equation. В зависимости от типа
уравнения мы вызываем соответствующую функцию: QSolve() или
LinSolve(). Тип уравнения определяется его коэффициентами на этапе
инициализации объекта. Поэтому в этот же момент в переменную-делегат
можно записать адрес соответствующей функции решения уравнения.
Выделим три метода решения уравнений – QSolve() для квадратного
уравнения, LinSolve() – для линейного уравнения и NullSolve() – для
уравнения нулевого порядка. Для любого уравнения будет вызываться одна
из этих функций. Функция, которая будет решать конкретное уравнение,
будет определяться в конструкторе класса. Указатель на нее будет сохранен в
экземпляре делегата с именем solve, который является полем класса
Equation. Сам делегат как тип данных определен в пространстве имен
приложения (можно определить и внутри класса). Вызов метода решения
уравнения будет осуществляться с помощью делегата:
Equation e = new Equation(1,2,3);
e.solve();
e.PrintSolution();
Далее приведем полный код приложения для решения квадратного
уравнения.
Здесь определяется переменная f как указатель на функцию, которая
возвращает значение типа double и имеет один аргумент типа double.
Присвоим переменной f адрес функции вычисления синуса:
f = Math.Sin;
Таким же образом можно было присвоить переменной f адрес любой
из вышеперечисленных функций.
Далее вызывать функцию вычисления синуса можно через переменную
f:
double y = f(3.1415926); // вызов функции sin(3.1415926)
Делегаты могут выступать в качестве полей класса. Приведем пример
использования делегата в классе Equation. В зависимости от типа
уравнения мы вызываем соответствующую функцию: QSolve() или
LinSolve(). Тип уравнения определяется его коэффициентами на этапе
инициализации объекта. Поэтому в этот же момент в переменную-делегат
можно записать адрес соответствующей функции решения уравнения.
Выделим три метода решения уравнений – QSolve() для квадратного
уравнения, LinSolve() – для линейного уравнения и NullSolve() – для
уравнения нулевого порядка. Для любого уравнения будет вызываться одна
из этих функций. Функция, которая будет решать конкретное уравнение,
будет определяться в конструкторе класса. Указатель на нее будет сохранен в
экземпляре делегата с именем solve, который является полем класса
Equation. Сам делегат как тип данных определен в пространстве имен
приложения (можно определить и внутри класса). Вызов метода решения
уравнения будет осуществляться с помощью делегата:
Equation e = new Equation(1,2,3);
e.solve();
e.PrintSolution();
Далее приведем полный код приложения для решения квадратного
уравнения.
68
Страницы
- « первая
- ‹ предыдущая
- …
- 66
- 67
- 68
- 69
- 70
- …
- следующая ›
- последняя »
