elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Solucionado][Duda][C#]Eventos y delegados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado][Duda][C#]Eventos y delegados  (Leído 5,644 veces)
final_frontier
Wiki

Desconectado Desconectado

Mensajes: 583


WOLOLOOO! Deal with it x)


Ver Perfil
[Solucionado][Duda][C#]Eventos y delegados
« en: 16 Agosto 2010, 21:02 pm »

(D4N93R me mata :xD)

Buenas, el caso es que tengo un pequeño code en C#, tengo un evento y un delegado pero el evento no llama al delegado cada vez que hago el cambio pertinente...

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace NewEventClase
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            eventos obj = new eventos();
  13.            int a = 3;
  14.            obj.delegado(obj.numero, a);
  15.            obj.numero = a;
  16.            for (int i = 1; i < 10; i++)
  17.                obj.numero = i;
  18.            Console.ReadLine();
  19.        }
  20.    }
  21.  
  22.    class eventos
  23.    {
  24.        public eventos()
  25.        {
  26.            _numero = 0;
  27.            delegado = new DatosHandlerEvent(danumero);
  28.        }
  29.  
  30.        private void danumero(int a, int b)
  31.        {
  32.            if(a!=b)
  33.                Console.WriteLine("Evento");
  34.        }
  35.  
  36.        public delegate void DatosHandlerEvent(int a, int b);
  37.        public event DatosHandlerEvent evento;
  38.        public DatosHandlerEvent delegado;
  39.  
  40.        private int _numero;
  41.        public int numero
  42.        {
  43.            get
  44.            {
  45.                return _numero;
  46.            }
  47.  
  48.            set
  49.            {
  50.                _numero = value;
  51.                if (evento != null)
  52.                {
  53.                    evento(value, _numero);
  54.                }
  55.            }
  56.        }
  57.    }
  58. }

¿Por qué no se ejecuta el evento en ese bucle del main?¿Qué tengo mal y como lo remedio?


« Última modificación: 17 Agosto 2010, 14:43 pm por final_frontier » En línea

Sie ist der hellste Stern von allen und wird nie vom Himmel fallen...
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Duda][C#]Eventos y delegados
« Respuesta #1 en: 16 Agosto 2010, 21:35 pm »

if (evento != null), ves esa línea, si nadie se ha subscrito al evento, no se va a ejecutar.


De paso que el delegado no está haciendo nada ahí xD

Y el evento a quién quieres apuntar? a el mismo método del delegado?

En tu código cuando llamas a "delegado", este está apuntando a danumero según la línea:   delegado = new DatosHandlerEvent(danumero);

ok, eso lo entiendes, pero ahora cuando ingresas un número a la propiedad numero, en el bloque SET haces lo siguiente:

Código
  1.                _numero = value;
  2.                if (evento != null)
  3.                {
  4.                    evento(value, _numero);
  5.                }
  6.  

Luego de que se asigne el valor al miembro privado, se debería ejecutar el evento, pero no lo hace porque está NULL.

Para subscribirte un evento sería de la siguiente manera:

Código
  1. evento += new DatosHandlerEvent(danumero);

Es MUY parecido a lo que hiciste con el delegado, porque básicamente son lo mismo. PERO el delegado lo puedes "llamar/ejectutar" desde un contexto afuera de la clase, en cambio el evento NO. Por ejemplo:

obj.delegado(obj.numero, a); Se ejecuta bien
obj.evento(obj.numero, a); NO SE PUEDE

Esa es la diferencia entre ambos.

Saludos!

PD: que te mato ! xD



En línea

final_frontier
Wiki

Desconectado Desconectado

Mensajes: 583


WOLOLOOO! Deal with it x)


Ver Perfil
Re: [Duda][C#]Eventos y delegados
« Respuesta #2 en: 17 Agosto 2010, 14:42 pm »

:xD Por lo menos ahora lo pillo :P
Gracias por la ayuda, ahora sí se me ejecuta el evento xD pondré el code por si sirve de referencia.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace NewEventClase
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            eventos obj = new eventos();
  13.            obj.numero = 0;
  14.            for (int i = 1; i < 10; i++)
  15.                obj.numero = i;
  16.            Console.ReadLine();
  17.        }
  18.    }
  19.  
  20.    class eventos
  21.    {
  22.        public eventos()
  23.        {
  24.            _numero = 0;
  25.            delegado = new DatosHandlerEvent(danumero);
  26.        }
  27.  
  28.        private void danumero(int a, int b)
  29.        {
  30.            if (a != b)
  31.                Console.WriteLine("Evento");
  32.  
  33.            else
  34.                Console.WriteLine("Lolazo");
  35.        }
  36.  
  37.        public delegate void DatosHandlerEvent(int a, int b);
  38.        public event DatosHandlerEvent evento;
  39.        public DatosHandlerEvent delegado;
  40.  
  41.        private int _numero;
  42.        public int numero
  43.        {
  44.            get
  45.            {
  46.                return _numero;
  47.            }
  48.  
  49.            set
  50.            {
  51.                if (evento == null)
  52.                {
  53.                    evento += new DatosHandlerEvent(danumero);
  54.                }
  55.  
  56.                evento(_numero, value);
  57.                _numero = value;
  58.  
  59.            }
  60.        }
  61.    }
  62. }
En línea

Sie ist der hellste Stern von allen und wird nie vom Himmel fallen...
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Solucionado][Duda][C#]Eventos y delegados
« Respuesta #3 en: 17 Agosto 2010, 14:52 pm »

Ahmm, Final, así no es :D es algo así:

Código
  1. class eventos
  2.    {
  3.        public eventos()
  4.        {
  5.            _numero = 0;
  6.             evento += new DatosHandlerEvent(danumero);
  7.        }
  8.  
  9.        private void danumero(int a, int b)
  10.        {
  11.            if (a != b)
  12.                Console.WriteLine("Evento");
  13.  
  14.            else
  15.                Console.WriteLine("Lolazo");
  16.        }
  17.  
  18.        public delegate void DatosHandlerEvent(int a, int b);
  19.        public event DatosHandlerEvent evento;
  20.  
  21.        private int _numero;
  22.        public int numero
  23.        {
  24.            get
  25.            {
  26.                return _numero;
  27.            }
  28.  
  29.            set
  30.            {
  31.                _numero = value;
  32.                if (evento != null)
  33.                     evento(_numero, value);
  34.            }
  35.        }
  36.    }
  37.  

Algo por el estilo :)
« Última modificación: 17 Agosto 2010, 15:19 pm por [D4N93R] » En línea

final_frontier
Wiki

Desconectado Desconectado

Mensajes: 583


WOLOLOOO! Deal with it x)


Ver Perfil
Re: [Solucionado][Duda][C#]Eventos y delegados
« Respuesta #4 en: 17 Agosto 2010, 14:54 pm »

Código
  1. if (evento == null)
  2.          evento(_numero, value);

La cagaste levemente creo xD
En línea

Sie ist der hellste Stern von allen und wird nie vom Himmel fallen...
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Solucionado][Duda][C#]Eventos y delegados
« Respuesta #5 en: 17 Agosto 2010, 14:55 pm »

AHh si xD eso pasa cuando copias y pegas código de los demás xD
 Ya lo arreglé!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Eventos teclas F1, F2, F3. etc
Java
ZedGe 4 7,647 Último mensaje 18 Noviembre 2011, 21:07 pm
por ZedGe
Delegados Generales [Aporte]
.NET (C#, VB.NET, ASP)
Keyen Night 0 1,774 Último mensaje 19 Febrero 2012, 22:59 pm
por Keyen Night
Los controles de la class principal no se actualizan con delegados... :-/
.NET (C#, VB.NET, ASP)
Eleкtro 7 3,825 Último mensaje 21 Diciembre 2012, 07:11 am
por Eleкtro
duda con eventos de boton
Java
m@o_614 1 1,964 Último mensaje 8 Febrero 2015, 03:37 am
por 3n31ch
[Solucionado][PYTHON]No me funcioan las instruciones para captar los eventos
Programación General
Mastodonte 0 1,954 Último mensaje 24 Septiembre 2017, 19:36 pm
por Mastodonte
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines