Categories

Metodo ToString() y el OVERRIDE en c#

Todas las clases en C# heredan el método ToString de la clase Object (clase de la cual heredan todas las demás y de la cual hablaremos más adelante).

El método ToString convierte a la instancia que lo llama en una cadena de tipo string.

Si creamos una clase nueva, tenemos que sobrecargar la clase ToString para que el compilador sepa como devolverla como cadena.

Veamoslo con un ejemplo, tenemos la siguiente clase:

public class Person
{
   //CAMPOS
   string firstName;
   string lastName;
   DateTime birthDate;

   //METODOS

   //CONSTRUCTOR
   public Persona(string firstName, string lastName, DateTime birthDate)
   {
       this.firstName = firstName;
       this.lastName = lastName;
       this.birthDate = birthDate;
   }
}

Como vemos la clase solo tiene campos y un constructor, vamos a ver que ocurre en este caso si invocamos al método ToString:

static void Main(string args[])
{
    Person.friend = new Person("Mar", "Gil", new DateTime(1980, 10, 12));
    Console.WriteLine(friend.ToString());
    Console.ReadLine();
}

Pues lo que ocurre es que la salida del programa anterior es:

HumanResources.Person

(Lo de HumanResources es porque Person lo hemos creado en el namespace HumanResources, nada importante).

Esta salida nos está diciendo que el metodo ToString de HumanResources.Person no está sobrecargado y que el compilador no sabe como mostrarlo.

Realicemos pues, nosotros la sobrecarga:

public class Person
{
   //CAMPOS
   string firstName;
   string lastName;
   DateTime birthDate;

   //METODOS

   //CONSTRUCTOR
   public Persona(string firstName, string lastName, DateTime birthDate)
   {
       this.firstName = firstName;
       this.lastName = lastName;
       this.birthDate = birthDate;
   }

   //SOBRECARGA de ToString
   public override string ToString()
   {
       return firstName + " " + lastName + " " + "(" + birthDate.Day + "/" +
              birthDate.Month + "/" + birthDate.Year + ")";
   }
}

Ahora si que al repetir el código del Main que he puesto antes se imprimiría por pantalla lo siguiente:

Mar Gil (12/10/1980)

MUY IMPORTANTE: Fijemonos que en la sobrecarga del método ToString hemos puesto override, esto significa que, aunque Person ya tiene un método ToString predefinido (el que hereda de object), estamos sobrecargandolo y, a partir de ahora, el método utilizado por la clase será el definido por nosotros.

2 responses to “Metodo ToString() y el OVERRIDE en c#

  1. El constructor se debe llamar Person

Leave a Reply

Blog Archive

Download

Javier Prieto Diaz. Con la tecnología de Blogger.