lunes, 10 de mayo de 2021

Delegate en C# parte 2


Seguimos con delegate en C# 

Un Multicast delegate es un delegado pero mantiene referencias a más de un método. Este tipo de delegado debe contener únicamente métodos que devuelvan un void, de otro modo se lanzará una excepción en tiempo de ejecución. Al invocar al delegado, se ejecutarán todos los métodos asociados en el mismo orden en el cual fueron agregados al delegado.

Para agregar métodos al delegado se emplea el operador  ‘+=’ y para eliminar métodos del delegado se emplea el operador ‘-=’. Un mismo método se puede añadir a un objeto delegado más de una vez. Veamos un ejemplo: 

using System;

 public delegate void MiDelegadoMultiCast(int i); 

public class Test

{

  public static void Main()

  {

    MiClase miClase = new MiClase();

    // instanciamos un delegado. Observa que el método MiMetodo1 de la clase 

    // MiClase cumple con la firma definida en el delegado

    MiDelegadoMultiCast delegado = miClase.MiMetodo1;

    delegado(83); // Se hace la llamada al delegado

    // agregamos ahora el Metodo2 

    delegado += miClase.MiMetodo2;

    // Se hace la llamada al delegado y se ejecutarán en orden secuencial ambos métodos

    delegado(55); 

    // eliminamos ahora el Metodo1 

    delegado -= miClase.MiMetodo1;

    // Se hace la llamada al delegado y se ejecutará únicamente el Método2

    delegado(14); 

  }

}

  

public class MiClase

{

  public void MiMetodo1(int i)

  {

    Console.WriteLine("El valor pasado al METODO1 como parámetro es: {0}", i);

  }

  public void MiMetodo2(int i)

  {

    Console.WriteLine("El valor pasado al METODO2 como parámetro es: {0}", i);

  }

}

Dejo link: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/using-delegates



No hay comentarios.:

Publicar un comentario