Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: r7pyrred en 11 Enero 2013, 22:43 pm



Título: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: r7pyrred en 11 Enero 2013, 22:43 pm
El c# y microsoft language especification-
Código:
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


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: Novlucker en 11 Enero 2013, 23:03 pm
Antes de seguir, ¿tienes claro el concepto de "herencia"?

Saludos


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: seba123neo en 11 Enero 2013, 23:05 pm
no entiendo porque este post tiene chincheta  :rolleyes:


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: 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


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: Novlucker en 11 Enero 2013, 23:56 pm
no entiendo porque este post tiene chincheta  :rolleyes:

Ups  :-X
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



Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: r7pyrred en 12 Enero 2013, 00:09 am
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


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: Novlucker en 12 Enero 2013, 00:22 am
Sí entiendes eso, entonces mejor leer lo mismo en español :P

 http://msdn.microsoft.com/es-es/library/9fkccyh4(v=vs.80).aspx


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: r7pyrred en 12 Enero 2013, 16:38 pm
Ok nueva duda sobre get set ¿son reservadas?
Código:
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


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: Novlucker en 13 Enero 2013, 23:54 pm
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


Título: Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
Publicado por: r7pyrred en 14 Enero 2013, 00:15 am
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