Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 2
Гостей: 2
Пользователей: 0
Реклама
Главная » Статьи » C# |
Урок 32
Вот пример делегата: using System; namespace test { //Объявление делегата. delegate float MyFunc(float x); //Класс для тестирования делегата. class Test { //Первая функция. static float f1(float x) { return x; } //Вторая функция. static float f2(float x) { return x*x; } //Третья функция. static float f3(float x) { return (float)Math.Sqrt(x); } //Метод Main. static void Main() { //Создаем экземпляр делегата. MyFunc f = new MyFunc(f1); int a; //Ответ пользователя. Console.WriteLine ("Выберите функцию:\n1.f1=x.\n2.f2=x*x.\n3.f3=sqrt(x)."); //Преобразуем ответ пользователя к типу Int32 a=Int32.Parse(Console.ReadLine()); switch(a) { case 1: //Записываем в делегат 1-ю функцию. f=new MyFunc(f1); break; case 2: //Записываем в делегат 2-ю функцию. f=new MyFunc(f2); break; case 3: //Записываем в делегат 3-ю функцию. f=new MyFunc(f3); break; } //Печатаем результат. int x=4; Console.WriteLine("f({0})={1}", x, f(x)); } } } В этой программе мы сначала объявляем делегат: ... delegate float MyFunc(float x); ... Синаксис объявления делегата такой - сначала пишем ключевое слово delegate, затем - тип возвращаемого значения (float в нашем примере), потом - произвольное имя делегата (у нас это MyFunc), после которого в круглых скобках перечисляем параметры (у нас только один параметр типа float). Объявленный делегат появится на вкладке ClassView (со специальным значком для делегатов): Далее мы в нашем тестовом классе объявляем несколько методов - f1, f2 и f3. Все эти методы имеют тип float и один параметр типа float (как и у делегата MyFunc). Функции делают свой подсчет по-разному - первая просто возвращает параметр, вторая - квадрат параметра, третья - корень из параметра. Далее мы в методе Main создаем экземпляр нашего делегата и в зависимости от ответа пользователя записываем в него f1, f2 или f3. Потом в строке ... Console.WriteLine("f({0})={1}", x, f(x)); ... мы выводим значение делегата при некотором x (равном 4 в нашем примере). Вернее сказать, мы выводим не значение делегата, а значение функции, которую мы записали в делегат. В зависимости от ответа пользователя в делегат запишется тот или иной вариант функции и программа выведет сам x (4), x умножить на x (16) или корень из x (2): | |
Просмотров: 761 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |