Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] C# Centro de Versiones [Newoverride] Sencillo
#1


Tutorial de versiones
Visual Studio .NET 2003
Este tutorial ilustra el tratamiento de versiones en C# mediante el uso de las palabras clave override y new. El control de versiones mantiene la compatibilidad entre las clases base y derivadas a medida que evolucionan.

Archivos de ejemplo

Vea Ejemplo de tratamiento de versiones para descargar y generar los archivos de ejemplo que se utilizan en este tutorial.

Información adicional

virtual
override
new
10.5.3 Métodos virtuales
Tutorial

El lenguaje C# está diseñado de modo que las versiones entre clases base y derivadas de diferentes bibliotecas puedan evolucionar y mantener la compatibilidad con las versiones anteriores. Esto significa que, por ejemplo, la inserción de un nuevo miembro en una clase base con el mismo nombre que un miembro de una clase derivada no es un error. También significa que una clase debe declarar explícitamente si un método va a reemplazar a un método heredado o si es un nuevo método que simplemente oculta un método heredado con un nombre similar.

En C#, los métodos no son, de forma predeterminada, virtuales. Para hacer que un método sea virtual, debe utilizarse el modificador virtual en la declaración del método de la clase base. La clase derivada puede entonces reemplazar el método base virtual mediante la palabra clave override u ocultar el método virtual en la clase base mediante la palabra clave new. Si no se especifica la palabra clave override ni la palabra clave new, el compilador emite una advertencia y el método de la clase derivada oculta el método de la clase base. El siguiente ejemplo ilustra estos conceptos.

Ejemplo

// versioning.cs
// CS0114 expected
public class MyBase
{
public virtual string Meth1()
{
return "MyBase-Meth1";
}
public virtual string Meth2()
{
return "MyBase-Meth2";
}
public virtual string Meth3()
{
return "MyBase-Meth3";
}
}

class MyDerived : MyBase
{
// Overrides the virtual method Meth1 using the override keyword:
public override string Meth1()
{
return "MyDerived-Meth1";
}
// Explicitly hide the virtual method Meth2 using the new
// keyword:
public new string Meth2()
{
return "MyDerived-Meth2";
}
// Because no keyword is specified in the following declaration
// a warning will be issued to alert the programmer that
// the method hides the inherited member MyBase.Meth3():
public string Meth3()
{
return "MyDerived-Meth3";
}

public static void Main()
{
MyDerived mD = new MyDerived();
MyBase mB = (MyBase) mD;

System.Console.WriteLine(mB.Meth1());
System.Console.WriteLine(mB.Meth2());
System.Console.WriteLine(mB.Meth3());
}
}
Resultado

MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3
Descripción del código

En C#, ocultar un miembro de una clase base desde una clase derivada no es un error. Esta característica permite realizar cambios en la clase base sin afectar a otras bibliotecas que heredan esta clase base. Por ejemplo, suponga que en cierto momento dispone de las siguientes clases:

class Base {}
class Derived: Base
{
public void F() {}
}
Posteriormente, la clase base podría evolucionar y agregar un método void F() del siguiente modo:

class Base
{
public void F() {}
}
class Derived: Base
{
public void F() {}
}


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Duda] Como puedo testear en los diferentes SO y versiones NewProject 8 447 02-09-2016, 09:33 AM
Último mensaje: NewProject
Información [Tutorial] Certificado SSL Gratis StartSSL 2016 Tutorial DarkMaster 26 5,255 28-04-2016, 03:39 AM
Último mensaje: Lob3zNo
Bombilla [Tutorial] SSL Gratis, Conseguir e Instalar Certificado DarkMaster 16 900 06-01-2016, 01:32 AM
Último mensaje: DarkMaster
  [PUBLICO] Tutorial Botones con perspectiva 3D AngelKrak 0 250 17-01-2015, 05:44 AM
Último mensaje: AngelKrak
  [Tutorial] Aumentar el Tamaño Máximo al Cargar Archivos con PHP y Apache papanoel 0 681 22-01-2014, 04:38 AM
Último mensaje: papanoel
  Tutorial Css Primera Parte para phpost JNeutron 4 1,064 24-02-2013, 04:01 AM
Último mensaje: Echizen
  [TUTORIAL] Conexión a una Base de Datos desde [PHP] lapipichapa 0 495 15-02-2013, 05:52 PM
Último mensaje: lapipichapa
  Tutorial de .htaccess | Control de acceso a carpetas diringax 11 1,464 13-01-2013, 12:28 PM
Último mensaje: papi
  [TUTORIAL] Como evitar el Hotlinkeo (robo de imágenes) Taquion 8 1,704 12-01-2013, 05:50 PM
Último mensaje: natestale
  Tutorial | Crear Sistema de Login PHP diringax 13 1,748 18-12-2012, 01:49 AM
Último mensaje: BrayanFG



Usuarios navegando en este tema: 1 invitado(s)