Foros del Web » Programación para mayores de 30 ;) » Programación General »

C#: Un concepto que no logro comprender...

Estas en el tema de C#: Un concepto que no logro comprender... en el foro de Programación General en Foros del Web. Hola qué tal? Estoy aprendiendo C# NET, para no quedarme en el pasado (y ver si consigo más laburo jaja). El tema es que estoy ...
  #1 (permalink)  
Antiguo 09/10/2007, 10:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Exclamación C#: Un concepto que no logro comprender...

Hola qué tal?

Estoy aprendiendo C# NET, para no quedarme en el pasado (y ver si consigo más laburo jaja). El tema es que estoy trabado con un concepto que no logro entender, algo que en realidad está más asociado a la POO... a ver si alguien me sabe dar una mano.


Tengo el siguiente código:

Código:
            using System;
            class A
            {
                        public virtual void F()
                        {
                                   Console.WriteLine("A");
                        }
            }
            
            class B:A
            {
                        public override void F()
                        {
                                   Console.WriteLine("Hola amigo!");

                                   ((A) this).F();         // *                           

                                   Console.WriteLine("Adios amigo!");
                        }

                        public static void Main()
                        {
                                   B b = new B();
                                   b.F();
                        }
            }
El caso es que este diminuto programa entra en loop. Al llamar al metodo "F" del objeto "b", se imprime en pantalla constantemente "Hola amigo!"... entiendo que en la linea comentada con un "*" (((A) this).F();) estoy llamando al metodo F() de la clase padre... pero no entiendo el LOOP... no logro visualizar el "circuito".

Yo interpreto esto... al llamar al metodo F (el override) de la clase B:

1. Imprimo "Hola amigo!"
2. Llamo al F() de la clase padre -> imprimo "A"
3. Imprimo "Adios amigo!"

No entiendo por qué al llegar la punto dos vuelvo al punto 1 !


Si alguien me pudiera tirar un poco de luz le agradecería mucho!!

Un saludo grande.
  #2 (permalink)  
Antiguo 09/10/2007, 11:36
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Re: C#: Un concepto que no logro comprender...

No conozco a fondo C#, pero si la salida del programa es "Hola amigo!" constantemente, esta bastante claro que llamar a un método virtual en una clase padre ejecuta el de la clase hija, es decir, estás llamando a tu misma F().

Que por cierto, es lo lógico y el comportamiento es análogo en C++.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:51.