private void btnOperar_Click(object sender, EventArgs e) { MiDelegado del1 = new MiDelegado(Form2.Suma); del1.Invoke(3, 2); MiDelegado del2 = new MiDelegado(this.Resta); del2.Invoke(3, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del1, del2); del3.Invoke(6, 4); MessageBox.Show((del3.Method).ToString()); MessageBox.Show((del3.Target).ToString()); string aux = ""; foreach (Delegate item in del3.GetInvocationList()) { aux += (item.Method).ToString() + "\n"; } MessageBox.Show(aux); MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(Form2.Multiplicar)); Form2.OtraSuma(del1, 10, 9); }
private void brnOperar_Click(object sender, EventArgs e) { MiDelegado del = new MiDelegado(Sumar); //del.Invoke(3, 2); MiDelegado del2 = new MiDelegado(this.Restar); //del2(5, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); del3.Invoke(10, 5); //MessageBox.Show(del3.Target.ToString()); //MessageBox.Show(del3.Method.ToString()); //foreach(MiDelegado d in del3.GetInvocationList()) //{ // MessageBox.Show(d.Method.ToString()); //} MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(Multiplicar)); del4.Invoke(5, 5); MiDelegado2 del5 = new MiDelegado2(OtraSuma); del5.Invoke(del, 8, 10); }
private void btnOperar_Click(object sender, EventArgs e) { Manejadora manejadora = new Manejadora(); //El delegado se encarga de invocar y pasar los datos recibidos a la direccion de memoria MiDelegado del = new MiDelegado(manejadora.Sumar); del.Invoke(3, 2);//Son los enteros que me requiere el metodo Sumar //del(5, 2); Se puede poner de ambas maneras MiDelegado del2 = new MiDelegado(manejadora.Restar); del2.Invoke(3, 2); //del2(5, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); //Combinar lista de invocacion, se combina el primero y el segundo para que el tercero tengo dos metodos del3.Invoke(83, 102); //Hace el metodo sumar y restar en un solo delegado, ya que esta combinado //MessageBox.Show(del3.Method.ToString()); Me muestra la ultima firma que tiene ese delegado MessageBox.Show(del3.Target.ToString()); //Me muestra la instancia de donde esta el metodo foreach (Delegate aux in del3.GetInvocationList()) //Muestra todas las firmas que tienen el delegado { MessageBox.Show(aux.Method.ToString()); } MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(manejadora.Multiplicar)); //Combina con el delegado 3 que tiene sumar y restar y tambien multiplica del4(3, 2); MiDelegado2 del5 = new MiDelegado2(manejadora.OtraSuma); del5.Invoke(del, 5, 2); //Invocas al delegado y este hace el metodo que tiene cargado, ejemplo del tiene suma }
private void btnBoton4_Click(object sender, EventArgs e) { MiDelegado del = new MiDelegado(Sumar); MessageBox.Show(del.Method.ToString()); // Me devuelve metodo de la lista de invocacion Delegate[] lista = del.GetInvocationList(); // Me devuelve lista completa de invocacion foreach (Delegate d in lista) { MessageBox.Show(d.Method.ToString()); } del.Invoke(3, 2); // o del(3,2) MiDelegado del2 = new MiDelegado(this.Restar); MessageBox.Show((del2.Target).ToString()); //Devuelve la instancia de clase que contiene al metodo que esta en la lista del2.Invoke(3, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); del3.Invoke(5, 2); MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del, new MiDelegado(this.Multiplicar)); del4.Invoke(12, 4); this.OtraSuma(del, 3, 2); }
private void btnBoton4_Click(object sender, EventArgs e) { Manejadora man = new Manejadora(); MiDelegado delegado1 = new MiDelegado(Manejadora.Sumar); MiDelegado delegado2 = new MiDelegado(man.Restar); MiDelegado delegadoCombinado = new MiDelegado((MiDelegado)MiDelegado.Combine(delegado1, delegado2)); MiDelegado delegado4 = new MiDelegado((MiDelegado)MiDelegado.Combine(delegadoCombinado, new MiDelegado(man.Multiplicar))); delegado1.Invoke(3, 5); //(explicita) delegado2(2, 5); //(implicita) Las dos llaman a Invoke. delegadoCombinado.Invoke(35, 623); MessageBox.Show(delegado1.Method.ToString()); MessageBox.Show(delegado2.Method.ToString()); MessageBox.Show(delegadoCombinado.Method.ToString()); //MessageBox.Show(delegado1.Target.ToString()); TIRA NULL EXCEPTION PORQUE ES ESTATICO MessageBox.Show(delegado2.Target.ToString()); MessageBox.Show(delegadoCombinado.Target.ToString()); foreach (Delegate item in delegado1.GetInvocationList()) { MessageBox.Show(item.Method.ToString()); } delegado4.Invoke(23, 52); OtraSuma(delegado1, 2, 5); }
static void Main(string[] args) { //Creo una instancia del tipo de delegado MiDelegado MiDelegado llamada = M1; //Añadimos varios metodos a un delegado llamada += M2; llamada += M3; llamada += M4; //lanzamos el delegado llamada(); //Cuando metodos ahi en la lista de mi delegado Console.WriteLine("\n Hay {0} metodos en la lista. \n", llamada.GetInvocationList().GetLength(0)); Console.WriteLine("------------------"); //Quitar metodos a un delegado llamada -= M2; //lanzamos el delegado llamada(); //Cuando metodos ahi en la lista de mi delegado Console.WriteLine("\n Hay {0} metodos en la lista. ", llamada.GetInvocationList().GetLength(0)); Console.ReadLine(); }
private void btnOperar_Click(object sender, EventArgs e) { MiDelegado delegado1 = new MiDelegado(Manejadora.Sumar); //delegado1.Invoke(8, 2); //delegado1(5, 2); //------------------------------------ Manejadora a = new Manejadora(); MiDelegado delegado2 = new MiDelegado(a.Restar); //delegado2.Invoke(3, 2); //------------------------------------- MiDelegado delegado3 = (MiDelegado)MiDelegado.Combine(delegado1, delegado2); delegado3.Invoke(5, 5); //------------------------------------- MessageBox.Show(delegado3.Method.ToString()); //indica cual metodo esta usando //------------------------------------ MessageBox.Show(delegado3.Target.ToString()); //indica cual es la instancia del metodo de invocacion //----------------------------------- string s = ""; foreach (Delegate d in delegado3.GetInvocationList()) { s += (d.Method).ToString() + "\n"; } //--------------------- MiDelegado delegado4 = (MiDelegado)MiDelegado.Combine(delegado3, new MiDelegado(a.Multiplicar)); a.OtraSuma(delegado1, 7, 7); }
public ud9_pract2() { InitializeComponent(); threadStart = new ThreadStart(ActualizacionesBackground); // Declaración del delegado con la llamada al procedimiento FuncionGenerar deleg1 = new MiDelegado(FuncionGenerar); }
public static void Main() { OtraClase objOtraClase = new OtraClase (); MiDelegado objMiDelegado = new MiDelegado (objOtraClase.Metodo1); objMiDelegado += objOtraClase.Metodo2; objMiDelegado(4); }
static void Main(string[] args) { //Creo una instancia de tipo delegado "MiDelegado" MiDelegado llamada = MetodoQueUsaElDelegado; llamada("Hola soy el método a través de un delegado!."); MetodoConDevolucion("La vivlia premoh", llamada); Console.ReadLine(); }
static void Main() { MiDelegado delegado1 = new MiDelegado(CRadio.MensajeRadio); delegado1("hola"); delegado1 = new MiDelegado(CPastel.MensajePastel); delegado1("feliz cumpleaños"); }
static void Main(string[] args) { int j; MiDelegado _delegado = x => x * x; //MiDelegado _delegado = Cuadrado; j = _delegado(10); Console.WriteLine(j); Console.ReadLine(); }
private void Form1_Load(object sender, EventArgs e) { frmDatos nuevoFrmDatos = new frmDatos(); MiDelegado miDelegado = nuevoFrmDatos.ActualizarNombre; nuevoFrmDatos.Parent = this; nuevoFrmDatos.Show(); }
static void Main(string[] args) { MiDelegado d1 = A.MetodoA; MiDelegado d2 = B.MetodoB; Console.WriteLine($"La suma es {d1(10,20)}"); Console.WriteLine($"La multiplicacion es {d2(10,20)}"); MiDelegado d = d1 + d2; Console.WriteLine($"El resultado es : {d(5,2)}"); }
/* * Ejemplo de varias forma de sintaxys de una expresion lambda * * Esta expresion Lambda devuelve un Boolean * (x,y) => x==y; * * Esta expresion Lambda le especificamos que tipo de valor recibe * (int x, string s) => s.Length > x (esta devolvera verdad cuando el valor de al cadena sea mayor que x) * * Expresion Lambda que no recibe ningun parametro * () => algunMetodo(); * * Esta expresion Lambda recibe un parametro que se llama 'n' y que recibe la instruciones que estan ente las '{ }' * Midelegado eldelegado = n => { } * * * */ static void Main(string[] args) { int j; //Expresion Lamda ( la primera x es el parametro que recibe nuestra firma del delegado , despues del operado => la expresion o las sentencia que se realizarian en una funcion normal MiDelegado eldelegado = x => x * x; //LLamada al delegado j = eldelegado(10); Console.Write(j); Console.ReadLine(); }
static void Main(string[] args) { //LLamada normal sin u sar el delegado MetodoQueUsaElDelegado1(" Hola Caracola, soy el método"); //Creo una instancia del tipo de delegado MiDelegado MiDelegado llamada = MetodoQueUsaElDelegado1; //Llamada al delegado llamada(" Hola pishhha, soy el delegado"); Console.ReadLine(); }
public static void Main(string[] args) { //Creamos un objeto del delegado y lo referenciamos a un metgto MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio); //Ahora por medio de l delegado hacemos uso del metgoto delegado("hola a todos"); //hacemos que apunte a otro metodo delegado = new MiDelegado(CPastel.MostrarPastel); //ahora invocamos el otro metodo delegado("Feliz cumpleanos"); }
static void Main(string[] args) { // Creo una instancia del tipo de delegado MiDelegado MiDelegado llamada = MetodoQueUsaElDelegado; llamada("Hola pishhha, soy la instancia del delegado"); MetodoQueUsaElDelegado("Hola caracola, soy el método"); llamada = MetodoQueUsaElDelegado1; MetodoConDevolucion("Texto recibido", llamada); Console.ReadLine(); }
public void AbrirModal(string msj) { if (this.InvokeRequired) { MiDelegado d = new MiDelegado(AbrirModal); this.Invoke(d, new object[] { msj }); } else { MessageBox.Show(msj, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); textBox1.Text = msj; label1.Text = msj; } }
static void Main() { Console.Title = "Uso de Delegados"; Console.WriteLine("\n==== Creando delegados ==== \n"); // Instanciar el delegado llamado MiDelegado //MiDelegado llamada = MetodoParaDelegado; //MiDelegado llamada = new MiDelegado(MetodoParaDelegado); MiDelegado llamada1 = ClaseDeMetodos.Metodo1; llamada1("Llamada con método estático"); MiDelegado llamada2 = new ClaseDeMetodos().Metodo2; llamada2("Llamada con método de instancia"); MiDelegado llamada3 = MetodoParaDelegado; llamada3("Metodo para delegado"); Console.WriteLine("\n================ MULTIDIFUSION =============\n"); MiDelegado todosDelegado = llamada1 + llamada2; todosDelegado += llamada3; todosDelegado -= llamada1; todosDelegado("Mensaje común a todos los delegados"); //llamada("hey!"); //MetodoParaDelegado("holo!"); //MetodoConDevolucion(10, 5, llamada); Console.WriteLine("\n==== Conociendo al delegado ==== \n"); int nReferencias = todosDelegado.GetInvocationList().GetLength(0); Console.WriteLine("Mi delegado todosDelegado tiene {0} referencias", nReferencias); Console.WriteLine("\n==== Referencia a metodo anonimo ==== \n"); OtroDelegado otroDlg = delegate(int x) { return(x + 2); }; Console.WriteLine(otroDlg(2)); Console.ReadLine(); }
public static void Main() { Console.WriteLine ("Se inicia el programa"); // Se crea una instancia de la clase 'OtraClase' OtraClase objOtraClase = new OtraClase (); Console.WriteLine ("Se añade al objeto delegado el método estático 'Metodo1DeOtraClase'"); // Añadir a 'objDelegado' un método estático de 'OtraClase' // Para añadir un primer método a un objeto delegado, se usa el operador '=' . // Pero esto vale solo para el primer método a añadir, el resto de los métodos se añaden // con el operador '+=' . Console.WriteLine ("Se crea una instancia de la clase 'OtraClase'"); MiDelegado objDelegado = new MiDelegado (OtraClase.Metodo1DeOtraClase); Console.WriteLine ("Se añade al objeto delegado el método no estático 'Metodo2DeOtraClase'"); // Se añade 'Metodo2DeOtraClase' que no es estático. Ahora usamos el operador //'+=' ya que no es el primer método a añadir. objDelegado += new MiDelegado (objOtraClase.Metodo2DeOtraClase); Console.WriteLine ("Se añade al objeto delegado el método estático 'Metodo1DeEstaClase'"); // Se añade un método estático de esta clase. No hay para que referirse al nombre de esta objDelegado += new MiDelegado (Metodo1DeEstaClase); Console.WriteLine ("Se crea una instancia de la clase 'EstaClase'"); // Crear una instancia de esta clase 'EstaClase' EstaClase objEstaClase = new EstaClase (); Console.WriteLine ("Se añade al objeto delegado el método no estático 'Metodo2DeEstaClase'"); // Se añade un método publico de esta clase objDelegado += new MiDelegado (objEstaClase.Metodo2DeEstaClase); Console.WriteLine ("Se llama a objDelegado objDelegado (8, 3);"); // Llamar a un método estático que se almacena en 'objDelegado' objDelegado (8, 3); // Ahora, llamamos a los métodos que están relacionados con los métodos de // 'objEstaClase' y los de 'objOtraClase'. Se vió que a 'objDelegado' al llamarlo no le // importa si los métodos a añadir son estáticos o públicos. // Ahora veremos algunos atajos para añadir métodos a un objeto delegado que se añadieron en la // versión 2.0 del lenguaje C# . Es importante tener en cuenta estos atajos para usarlos y también // leer código de otros programadores. objDelegado += objEstaClase.Metodo2DeEstaClase; objDelegado += OtraClase.Metodo1DeOtraClase; // Ejecutando el delegado objDelegado (10, 20); }
static void Main(string[] args) { // Creo una instancia del tipo de delegado MiDelegado MiDelegado delegado = M1; delegado += M2; delegado += M3; delegado(); // M1,M2,M3 delegado -= M2; // M1,M3 delegado(); Console.WriteLine("Hay {0} métodos en la lista.", delegado.GetInvocationList().GetLength(0)); Console.ReadLine(); }
static void Main(string[] args) { MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio); //Usamo el delegado delegado("Hola a todos"); //Hacemos otro apunte a una nueva clase delegado = new MiDelegado(Cpastel.MostrarPastel); //Ahora invocamos el otro metodo delegado("Feliz cumpleaños"); Console.Read(); }
private void button1_Click_1(object sender, EventArgs e) { MiDelegado del1 = () => { x = Convert.ToInt32(Txt1.Text); y = Convert.ToInt32(Txt2.Text); // Tr.Text = Convert.ToString((x + y)); }; imprimir(del1); //Longitud lg = (s) => (s.Length > 5); //MessageBox.Show(lg(Txt1.Text).ToString()); }
static void Main(string[] args) { // Creamos un objeto del delegado y lo refenciamos a un metodo MiDelegado delegado = new MiDelegado(Clase.Radio.MetRadio); // Ahora por medio del delegado hacemos uso del metodo delegado("Hola esta es la emisora 0.31"); // Hacemos que apunte a otro metodo delegado = new MiDelegado(Clase.Anuncio.MetAnuncio); // Ahora invocamos el otro metodo delegado("Pastel come mucho"); System.Threading.Thread.Sleep(4000); }
private void Operar_Click(object sender, EventArgs e) { MiDelegado delegado = new MiDelegado(Manejadora.Sumar); delegado.Invoke(3, 2); // EXPLICITA delegado(3, 2); // IMPLICITA Manejadora manejadoraParametro = new Manejadora(); MiDelegado delegado2 = new MiDelegado(manejadoraParametro.Restar); delegado2(3, 0); Delegate delegadoTres = MiDelegado.Combine(delegado, delegado2); //MiDelegado delegadoCuatro = MiDelegado.Combine(delegadoTres, new MiDelegado(); }
static void Main(string[] args) { // Uso del delegado en metodo de la clase radio MiDelegado delegado = new MiDelegado(CRadio.metodoRadio); delegado("Hola a todos"); // Uso del delegado en metodo de la clase pastel delegado = new MiDelegado(CPastel.mostrarPastel); delegado("Good Day"); Thread.Sleep(2000000); }
static void Main(string[] args) { //LLamada normal sin u sar el delegado MetodoQueUsaElDelegado1(" Hola Caracola, soy el método"); //Creo una instancia del tipo de delegado MiDelegado MiDelegado llamada = MetodoQueUsaElDelegado1; //Llamada al delegado llamada(" Hola pishhha, soy el delegado"); //LLamada al metodo que recibe otro metodo como parametro a atraves de su delegado metodoConDevolucion("Texto Recibido", llamada); Console.ReadLine(); }
static void Main(string[] args) { Console.Title = "Tutorial C# intermedio 9 --- Delegados I"; // Creamos un objeto del delegado y lo referenciamos a un método MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio); // Ahora por medio del delegado hacemos uso del método delegado("Hola a todos"); Console.WriteLine(); // Hacemos que apunte a otro método delegado = new MiDelegado(CPastel.MostrarPastel); // Ahora invocamos el otro método delegado("Feliz cumpleaños"); }
static void Main(string[] args) { MiDelegado d1 = A.MetodoA; MiDelegado d2 = B.MetodoB; //Invocamos delegados de forma separa Console.WriteLine($"La suma es {d1(10,20)}"); Console.WriteLine($"La multiplicacion es {d2(10,20)}"); Console.WriteLine(); //Delegado multicast que une los 2 metodos MiDelegado d = d1 + d2; Console.WriteLine($"El resultado es {d(10,20)}");//Regresa el resultado del ultimo metodo invocado Console.WriteLine(); Console.WriteLine(); }
static void Main(string[] args) { MiDelegado llamadaAVarios = M1; llamadaAVarios += M2; llamadaAVarios += M3; //llama a los métodos M1,M2,M3 llamadaAVarios(); //Ver cuantos métodos hay en la lista Console.WriteLine("\n\nHay {0} métodos en la lista.\n\n", llamadaAVarios.GetInvocationList().GetLength(0)); //Quitamos M1, solo llamará a M2 y M3 llamadaAVarios -= M1; llamadaAVarios(); //Volvemos a ver cuantos métodos hay en la lista Console.WriteLine("\n\nHay {0} métodos en la lista.\n\n", llamadaAVarios.GetInvocationList().GetLength(0)); Console.ReadKey(); }
public static void Main() { Console.WriteLine ("Se inicia el programa"); // Se crea un objeto de la clase 'OtraClase' OtraClase objOtraClase = new OtraClase (); // Se crea un objeto delegado y se le asigna un método, en este ejemplo le // asignamos solo un método, pero se le pueden asignar más. // Crear un objeto delegado es muy similar a crear un objeto con una clase, la // diferencia es que le asignamos un método, en ves de argumentos. // El método no se esta llamando por eso no se utiliza los paréntesis // 'objOtraClase.Metodo1' MiDelegado objDelegado = new MiDelegado (objOtraClase.Metodo1); // Se crea una variable de tipo int y se le asigna el valor de retorno // del objeto delegado, que es el mismo retorno de el método anteriormente asignado int retorno = objDelegado (5); // Se hace la llamada de la misma forma que un método // Muestra el valor de retorno Console.WriteLine ("El valor devuelto es {0}", retorno); }
private void btnOperar_Click(object sender, EventArgs e) { MiDelegado d = new MiDelegado(Manejadora.Sumar); d.Invoke(3, 2); d(3, 2); MiDelegado dr = new MiDelegado((new Manejadora()).Restar); dr(3, 2); MiDelegado delegadoCombinado = (MiDelegado)MiDelegado.Combine(d, dr); delegadoCombinado.Invoke(4, 2); MessageBox.Show(dr.Method.ToString() + " - " + dr.Target.ToString()); foreach (MiDelegado item in delegadoCombinado.GetInvocationList()) { MessageBox.Show(item.Method.ToString()); } MiDelegado d4 = (MiDelegado)MiDelegado.Combine(delegadoCombinado, new MiDelegado((new Manejadora()).Multiplicar)); d4(3, 4); (new Manejadora()).OtraSuma(d, 3, 2); }