public static void Executar() { //Executa diretamente o método Console.WriteLine($"Duplicar(7.5): {Duplicar(7.5)}"); //Executa diretamente o método Console.WriteLine($"Triplicar(7.5): {Triplicar(7.5)}"); MetodoMultiplicacao metodoMultiplicacao = Duplicar; Console.WriteLine(metodoMultiplicacao(7.5)); ///troca a referência metodoMultiplicacao = Triplicar; Console.WriteLine($"Triplicar(7.5): {metodoMultiplicacao(7.5)}"); // instancia um delegado com um método anônimo MetodoMultiplicacao metodoQuadrado = delegate(double input) { return(input * input); }; double quadrado = metodoQuadrado(5); Console.WriteLine("quadrado: {0}", quadrado); // intancia um delegado com uma expressão lambda MetodoMultiplicacao metodoCubo = input => input * input * input; double cubo = metodoCubo(4.375); Console.WriteLine("cubo: {0}", cubo); }
public static void Executar() { System.Console.WriteLine($"Duplicar(7.5): {Duplicar(7.5)}"); System.Console.WriteLine($"Triplicar(7.5): {Triplicar(7.5)}\n"); MetodoMultiplicacao metodoMultiplicacao = Duplicar; System.Console.WriteLine("usando delegate com duplicar"); System.Console.WriteLine($"Duplicar(7.5): {metodoMultiplicacao(7.5)}"); metodoMultiplicacao = Triplicar; System.Console.WriteLine("usando delegate com triplicar"); System.Console.WriteLine($"Triplicar(7.5): {metodoMultiplicacao(7.5)}"); //instancia um delegate com um metodo anonimo MetodoMultiplicacao metodoQuadrado = delegate(double input) { return(input * input); }; double quadradoResultado = metodoQuadrado(5); System.Console.WriteLine($"Quadrado: {quadradoResultado}\n"); //instancia um delegate com um expressao lambda MetodoMultiplicacao metodoCubo = input => input * input * input; System.Console.WriteLine($"Cubo de 5: {metodoCubo(5)}"); }
public static void Executar() { Console.WriteLine($"Duplicar(7.5): {Duplicar(7.5)}"); Console.WriteLine($"Triplicar(7.5): {Triplicar(7.5)}"); MetodoMultiplicacao metodoMultiplicacao = Duplicar; Console.WriteLine(metodoMultiplicacao(7.5)); metodoMultiplicacao = Triplicar; Console.WriteLine(metodoMultiplicacao(7.5)); MetodoMultiplicacao metodoQuadrado = delegate(double input) { return(input * input); }; double quadrado = metodoQuadrado(5); Console.WriteLine($"Quadrado: {quadrado}"); MetodoMultiplicacao metodoCubo = input => input * input * input; double cubo = metodoCubo(4.375); Console.WriteLine($"Cubo: {cubo}"); }
public void Executar() { MetodoMultiplicacao metodoMultiplicacao = Duplicar; Console.WriteLine(metodoMultiplicacao(3)); // método anônimo // Ou seja, que não foi declarado em nenhum escopo antes, somente nesse. MetodoMultiplicacao metodoQuadrado = delegate(double input) { return(input * input); }; Console.WriteLine(metodoQuadrado(4)); // chamando um método anônimo com lâmbida; MetodoMultiplicacao metodoCubo = input => input * input * input; Console.WriteLine(metodoCubo(4)); // declarando o método sem uma assinatura prévia... //Func => espera que seja retornado algo Func <int, int>?delegateComRetorno = delegate(int input) { return(input); }; //Action => não espera retorno (ou seja, um void). Action <int> delegateSemRetorno = delegate(int input) { Console.WriteLine(input); }; delegateComRetorno(10); delegateSemRetorno(10); }