public void EjemplosDelegadosLambda() { DelegadosEjemploSystemDefined ejemplo = new DelegadosEjemploSystemDefined();//se hace un objeto de la clase. ejemplo.M1 = (int primer, int seg) => primer + seg;//lambda entre parentesis, los parametros, la flechita equivale al return, despues esta el cuerpo del metodo.//una metodo que se guarda en M1 y este a su vez es la firma. ejemplo.M2 = (string uno, string dos) => uno + dos; ejemplo.M3 = x => ImprimirEnConsola(x);//cuando es un solo parametro se pueden omitir los parentesis y el tipo de dato, en este caso, el cuerpo del metodo es un metodo que cumple con la firma y se guarda en M3 que es la variable de tipo delegado. int resultadoSuma = ejemplo.M1(10, 12);//se pasan los valores a la variable de tipo delegado. string resultString = ejemplo.M2("jonas", "nahum");//se pasan los valores a la variable de tipo delegado. ejemplo.M3("Hola");//se pasan los valores a la variable de tipo delegado. Assert.AreEqual(22, resultadoSuma); Assert.AreEqual("jonasnahum", resultString); }
public void EjemplosDelegadosSystemDefined() { //las variables de tipo delegado guardan la implementacion del metodo que cumple con la firma. int Z = 1;//esta variable puede ser llamada dentro de un metodo, pero no alrevez, mas adelante, cambia su valor, y por lo tanto, no afecta el metodo en donde se usa. DelegadosEjemploSystemDefined ejemplo = new DelegadosEjemploSystemDefined();//un objeto de la clase. ejemplo.M1 = delegate(int x, int y) //estos son los parametros.//variable de tipo delegado M1//se pasa el metodo que va a guardar M1// delegate suple al nombre del metodo, este es un delegado anonimo, no tiene nombre, y hace su implementacion. { return (x + y) - Z;//este es el cuerpo del metodo }; ejemplo.M2 = delegate(string a, string b)//variable de tipo delegado M2//aqui es un metodo declarado inline, adem[as es un metodo anonimo.cumple con el delegado de M2. { return a + b; };//lleva ; porque es una sola linea toda la implementacion. ejemplo.M3 = ImprimirEnConsola;//variable de tipo delegado M3.sin parentesis se pasa el metodo porque es variable. Z = 0;//variales capture,.. int resultadoSuma = ejemplo.M1(10, 12);//se pasan los valores a la variable de tipo delegado que a su vez, se va a guardar en M1. string resultString = ejemplo.M2("jonas", "nahum");//se pasan los valores a la variable de tipo delegado que se va a guardar en M2. ejemplo.M3("Hola"); Assert.AreEqual(22, resultadoSuma); Assert.AreEqual("jonasnahum", resultString); }