Делегаты в C#

НАВИГАЦИЯ ПО СТРАНИЦЕ

Определение Использование Пример использования

Делегаты — это типы данных, которые позволяют передавать методы как параметры других методов. Они представляют собой объектно-ориентированный способ обеспечения ссылочной безопасности и вызова методов посредством делегирования.

  1. Определение делегатов:

    • Делегаты определяются как типы, которые представляют собой ссылки на методы.

    • Они объявляются с использованием ключевого слова delegate.

       public delegate void ExampleDelegate(string message);
  2. Использование делегатов:

    • Делегаты позволяют передавать методы как параметры других методов или использовать их для обратного вызова.

      public class DelegateExample
      {
          public void MethodA(string message)
          {
              Console.WriteLine("MethodA: " + message);
          }
      
          public void MethodB(string message)
          {
              Console.WriteLine("MethodB: " + message);
          }
      }
  3. Пример использования:

    • Создание экземпляра делегата и связывание его с методами для последующего вызова.

      public class Program
      {
          public static void Main(string[] args)
          {
              DelegateExample example = new DelegateExample();
      
              ExampleDelegate delegateA = example.MethodA;
              ExampleDelegate delegateB = example.MethodB;
      
              delegateA("Hello");
              delegateB("World");
          }
      }

Пример кода:

using System;

public delegate void ExampleDelegate(string message);

public class DelegateExample
{
    public void MethodA(string message)
    {
        Console.WriteLine("MethodA: " + message);
    }

    public void MethodB(string message)
    {
        Console.WriteLine("MethodB: " + message);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        DelegateExample example = new DelegateExample();

        ExampleDelegate delegateA = example.MethodA;
        ExampleDelegate delegateB = example.MethodB;

        delegateA("Hello");
        delegateB("World");
    }
}

Этот код создает делегат ExampleDelegate, который может ссылаться на методы MethodA и MethodB класса DelegateExample. После этого он использует эти делегаты для вызова соответствующих методов с сообщениями.

Делегаты позволяют передавать методы как параметры и использовать их для вызова других методов, обеспечивая гибкость и удобство в программировании.