Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

¿Sobrecarga de métodos en VB o C#?

Tengo una duda sobre las sobre cargas. Por ejemplo si tengo en C# (que el equivalente en VB sería igual, aún no se define el lenguaje para el desarrollo):

public void Metodo(Clase1 parametro) { //.... }

public void Metodo(Clase2 parametro) { //.... }

Obviamente en la ejecución sabe que si es Clase1 usa una sobrecarga y si el parámetro es de tipo Clase2 usa la otra. Lo voy a poner de manera un poco más explícita.

public void Metodo(XmlDocument listaDatos) { //.... }

public void Metodo(DataTable listaDatos) { //.... }

Ambos son excluyentes, es decir, el documento XML no tiene nada que ver con la tabla, ¿pero qué pasa con lo siguiente?

public void Metodo(DataTable parametro) { //.... }

public void Metodo(Object parametro) { //.... }

Siendo que la clase Object acepta cualquier tipo de dato, si le paso un DataTable, ¿sabe que tiene que usar la otra sobrecarga? Es decir, si la variable que le paso está declarada como DataTable se debe ir al que tiene un parámetro DataTable, cierto? Por ejemplo:

int edad = 30;

XmlDocument docto = new XmlDocument();

DataTable tabla = new DataTable();

Metodo(edad); //Este se va al que tiene Object, no es compatible con la otra sobrecarga

Metodo(docto); //Este también

Metodo(tabla); //Este es compatible con ambas, Object sí acepta DataTable. ¿A cuál se va?

1 Answer

Rating
  • Anonymous
    8 years ago
    Favorite Answer

    En la última llamada C# buscaré el método que mejor se ajuste al tipo de datos del parámetro, en este caso a DataTable.

Still have questions? Get your answers by asking now.