Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Передача функции как параметра


Автор: kline 5.2.2009, 15:54
Подскажите пожалуйста можно-ли в шарпее передавать функцию в качестве параметра в другую функцию.
Что-то типа такого:
Код

void Function1()
{
MessageBox("Hello");
}

void Function2( ref Function1 )
{
Function1();
}


Автор: Alekz 5.2.2009, 16:09
Код

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Создаем делегат
            Mydelegate d = new Mydelegate(MethodToInvoke);
            //Вызываем метод с делегатом
            Invoke(d);

            Console.ReadLine();
        }

        //Объявляем тип делегата
        private delegate void Mydelegate();

        //"Ссылку" на этот метод будем передавать
        private static void MethodToInvoke()
        {
            Console.WriteLine("Hello!");
        }

        //Метод принимающий делегат
        private static void Invoke(Mydelegate del)
        {
            del.Invoke();
        }
    }
}


Автор: antikom 5.2.2009, 16:11
Нет наверно так нельзя, а для чего это вам если не секрет?

Автор: Drabuna 5.2.2009, 16:15
Почему бы не вызывать функцию в другой функции, а не передавать как параметр?)

Автор: kline 5.2.2009, 17:22
To anticom

для обработки событий - делаю сборку для организации GUI'я на VBS.
и чтобы при например нажатии на кнопку на Net-форме вызвать функцию из скрипта

Автор: unicuum 5.2.2009, 20:32
Цитата(kline @  5.2.2009,  15:54 Найти цитируемый пост)
Подскажите пожалуйста можно-ли в шарпее передавать функцию в качестве параметра в другую функцию.

Можно, делегатами.

Автор: QryStaL 5.2.2009, 22:29
Цитата(antikom @  5.2.2009,  16:11 Найти цитируемый пост)
Нет наверно так нельзя, а для чего это вам если не секрет?

Вообще-то можно, а насчет зачем - тысяча применений =) Например, LINQ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)