Es c# dejen lo pasar por ahora sobre metodos virtuales

Iniciado por r7pyrred, 11 Enero 2013, 22:43 PM

0 Miembros y 1 Visitante están viendo este tema.

r7pyrred

El c# y microsoft language especification-
When a virtual method is invoked, the runtime type of the instance for which that invocation takes place determines the actual method implementation to invoke. In a nonvirtual method invocation, the compile-time type of the instance is the determining factor.?

Alguien puede explicar con detenimiento este meollo de invocaciones y de lo otro es
un lío y expliquenlo de manera que lo entienda un nuevo en C# no encontre otro foros

Novlucker

Antes de seguir, ¿tienes claro el concepto de "herencia"?

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

r7pyrred

La herencia es una caracterísica de lenguaje POO que es capaz dereutilizar
otra clase por ejemplo de una superclase y tener la misma signature creo que me expliqué bien,por cierto gracias por responder

Novlucker

Cita de: seba123neo en 11 Enero 2013, 23:05 PM
no entiendo porque este post tiene chincheta  :rolleyes:

Ups  :-X
Cita de: r7pyrred en 11 Enero 2013, 23:27 PM
La herencia es una caracterísica de lenguaje POO que es capaz dereutilizar
otra clase por ejemplo de una superclase y tener la misma signature creo que me expliqué bien,por cierto gracias por responder

Bien, sí tú en una clase tienes un método X con cierto comportamiento, y en una clase derivada quieres redefinir/reescribir este método, el mismo debe de estar declarado como virtual en la base (abstracto es otra opción, pero tiene otro comportamiento).

Supongamos que tienes una clase Vehículo con un método mover que simula el movimiento en un casillero. Por otra parte tienes una clase derivada de nombre Ferrari, sí quieres que este último se mueva 5 casilleros, en la clase Vehículo el método mover debe de estar definido como virtual, para luego en Ferrari sobreescribirlo con override :)

Espero se haya entendido.

Saludos

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

r7pyrred

si si y lo que yo buscaba era que tal y como lo explicaba el specification porque lo dic
asi , si alguien hace el favor de tomarse un tiempecin en explicar
porque lo explica asi me haria un favor ,gracias por la respuesta

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

r7pyrred

Ok nueva duda sobre get set ¿son reservadas?
class MyBaseClass
{
    // virtual auto-implemented property. Overrides can only
    // provide specialized behavior if they implement get and set accessors.
    public virtual string Name { get; set; }

    // ordinary virtual property with backing field
    private int num;
    public virtual int Number
    {
        get { return num; }
        set { num = value; }
    }
}

En al l´´inea 3  es una funcion con el modificador virtual 
que crea o dice que tiene miembros get y set entre brackets
y luego es otra duncion es la 7 que los usa¿? o como es

Novlucker

Los get y set son reservados. Y si estabas mirando el código que aparece en el link que he dejado anteriormente, lo único que se da como ejemplo es una propiedad auto-implementada y virtual, que luego es sobreescrita por la clase derivada, no me queda claro cual sería la duda :-\

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

r7pyrred

si si es una propiedad , es que yo venía de c++ y propiedades en c++ y c#
significan cosas distintas, es una propiedad y get y set no son ni miembros
de una clase ni métodos ni funciones como yo pensaba son ACCESORS algo al
parecer único de las propiedades y que se han de "declarar" uno o los dos
propiedad {uno ; otro ;} según se quiera I ,O o IO xD gracias por la rspuesta