Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Métodos virtuales y no virtuales en C#
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Métodos virtuales y no virtuales en C#

Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
Daniel316
Usuario


Registrado: Jul 19, 2013
Mensajes: 1

Asunto: Métodos virtuales y no virtuales en C# Responder citando

Hola a todos.
Demás está explicarles que estoy intentando aprender Métodos virtuales en C#, el caso es que la manera que muestro el método virtual es infantil.-
La consulta es, hay alguna manera de cambiar new x override mediante programación.-
Les pongo un Ej. en foxpro:
STORE "DISABLE" TO estado
&estado(de esta manera no me mostraba la cadena "Disable" sino el estado del botón).-

Les dejo el programita.-

Código:
using System;

namespace HerenciaConstructores
{
    public class A
    {
        public virtual void Metodo()
        {
            Console.Write("\n hola metodo en A..");
        }
    }
    public class B : A
    {
        public override void Metodo()
        {
            Console.Write("\n hola metodo en B..");
        }
    }
    public class C : A
    {
        public new void Metodo()
        {
            Console.WriteLine("\n hola metodo en C..");
        }
    }
   
    class ProgramaApp
    {
        static void Main(string[] argumentos)
        {
            A ab = new B();
            A ac = new C();

            Console.Write("\n =============== Método No Virtual (new)===============");
            ac.Metodo();
            ab.Metodo();

            Console.Write("\n\n =============== Método Virtual (virtual/override)===============");
            Console.Write("\n hola metodo en B..");
            Console.Write("\n hola metodo en C..");

           
            Console.Write("\n\n Pulse una tecla para cerrar la aplicación..."); Console.ReadLine();
        }
    }
}

/*hiding = ocultación
override = anular

Efectivamente new “oculta” la implementación padre del método, esto lo notamos al instanciar C en A, como encontramos
que la implementación de C es “nueva” entonces recurrimos a la versión “original” del método (ya que será una instancia de A después de todo).
En el caso de instanciar B sobre A nos damos cuenta que “override” indica que siempre debemos usar esa versión ya que modifica efectivamente
a la implementación original. Podriamos decir entonces que mientras “override” modifica la implementación original, new “reimplementa” el método.
Morajela, al castear hacia abajo en la cadena de implementación el CLR buscará y preferirá las implementaciones “override”.-*/


Como es mi primer post me voy a presentar.-
Tengo 61 años y soy un apasionado por la programación, soy autodidacta y estudio con libros electrónicos y mucha pero mucha consulta en los foros.-

Un gran abrazo.
Daniel Argentina-Santa Fé - Arequito
MensajePublicado:
Mie Sep 04, 2013 5:32 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+