[C#] Cómo hacer llamadas asíncronas usando Delegates.


Uno de los usos más comunes de los delegados son las llamadas a métodos asíncronas, esto es, se puede realizar una invocación a un método y volver al hilo principal inmediatamente mientras el delegado se ejecuta en un hilo separado. El delegado se ejecuta en paralelo al hilo llamador y cuando dicho delegado termina su trabajo, se realiza una llamada callback al llamante informando de su finalización.

Seguir leyendo

[.NET] Qué es un Delegate y su implementación en C# (y II).


En el anterior post vimos la definición de delegate, qué características tiene y vimos también las diferentes formas de instanciarlos. En el siguiente post veremos qué es un Multicast delegate y los diferentes tipos de Generic delegate.

¿Qué es un Multicast delegate?

Un Multicast delegate es un delegado el cual 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.

Seguir leyendo

[.NET] Qué es un Delegate y su implementación en C# (I).


En el siguiente post veremos la definición de un delegate y cómo se implementa en C#, qué características tienen y las diferentes maneras que existen de instanciarlos.

¿Qué es un delegate?

Un delegate es un tipo que representa referencias a métodos con una lista de parámetros determinada y un tipo de valor devuelto. Es la versión de .NET de los punteros a función de C++ pero con seguridad de tipos (type-safe), es decir, se comprueban los tipos de retorno y de los parámetros del mismo. La clase de delegado no sólo contiene una referencia a un método, también puede mantener referencias a varios métodos mientras cumplan con la firma definida.

Seguir leyendo

[MVP] Microsoft MVP 2015


MVP2015

 

Buenas a todos,
hoy he recibido una grata noticia. He sido reconocido como Microsoft MVP (Most Valuable Professional) por segundo año consecutivo. La verdad es que este reconocimiento me llena de ilusión y me da mucha energía para seguir colaborando con la comunidad técnica. Es un orgullo pertenecer a ese conjunto de personas que día a día comparten su conocimiento con todo el mundo.

Os dejo un enlace con más información sobre el Programa de Reconocimiento Microsoft MVP y a mi perfil Sergio Parra Guerra

[.NET] Qué son los Generics y su implementación en C# (y II).


En el anterior post vimos el concepto y las ventajas que tienen los Generics. Hoy veremos cómo emplear generics en clases, métodos, interfaces y delegados, y también conocer las características que tienen.

Qué es un parámetro de tipo genérico

Es un contenedor para un tipo de dato específico usado al crear una instancia de una variable generic. Por convención, los parámetros de tipo genérico vienen prefijados con la letra T y deben ser únicos en la declaración para evitar conflictos de nombres en la implementación.

Por ejemplo tenemos la siguiente declaración

public class List<T> {
   private T[] elements;
}

Como podemos observar, se puede usar el parámetro de tipo genérico (en nuestro caso T) en cualquier parte en la que se espera un tipo específico.

Así, si definimos una lista de enteros de la siguiente forma

List<int> miLista = new List<int>;

Dentro de la implementación, nuestro parámetro de tipo genérico se sustituye por el tipo específico int.

private int[] elements;

Generics

Seguir leyendo