ToString

El método ToString lo podemos utilizar en cualquier objeto de .NET, y sirve para mostrar a ese objeto convertido a texto. ¿Pero sabemos realmente lo que esto significa, o cómo utilizar este método?

Supongamos que yo tengo una aplicación (sea WinForms o ASP.NET), en la que registro empleados. Estos empleados están ligados al departamento donde laboran. Así que crearé unas clases más o menos asi:

namespace MiAplicacion.Clases {
  public class Departamento {
    public int clave { get; set; }
    public string nombre { get; set; }
  }
  public class Empleado {
    public int clave { get; set; }
    public string nombre { get; set; }
    public string apPaterno { get; set; }
    public string apMaterno { get; set; }
    public Departamento departamento { get; set; }
  }
}

Luego, en alguna parte de mi aplicación, mostraré un listado de los empleados, los cuales serán cargados en un objeto List<Empleado> y cargados en un Grid como origen de datos. Si muestro todos los datos de mi clase Empleado como columnas del Grid, esto es lo que se verá:

clave nombre apPaterno apMaterno departamento
1 Juan López Pérez MiAplicacion.Clases.Departamento
2 Francisco Martínez Rodgríguez MiAplicacion.Clases.Departamento
3 María Juana Sánchez Hernández MiAplicacion.Clases.Departamento

¿Qué pasó con el departamento? ¿Por qué se ve el nombre de la clase? ¿Qué le pasa a .NET?

Primero, hay que explicar lo que hace .NET. El DataGridView de WinForms y el GridView de ASP.NET tienen que mostrar un texto en pantalla, sea una variable numérica, de texto, de una clase específica, etc. ¿Cómo obtienen un texto de un tipo de dato? Usando el método ToString, el cual «convierte» el objeto a mostrar en texto.

El método ToString existe en la clase Object, y por lo tanto, todas las clases lo heredan, aplicándolo de la misma forma que Object: devolviendo el tipo de dato. De ahí nuestro problema con el departamento.

Para resolverlo, simplemente sobreescribimos el método ToString en nuestra clase.

public class Departamento {
  public override string ToString() {
    return nombre;
  }
}

Así de simple. Nuestro Grid mostrará el nombre del departamento en el lugar debido.

También podemos hacer eso con la clase Empleado. Si, por ejemplo, es muy recurrente en la aplicación mostrar el nombre completo del empleado, podemos aprovechar el mismo método:

public class Empleado {
public class Empleado {
  public override string ToString() {
    return string.Format("{0} {1} {2}", nombre, apPaterno, apMaterno);
  }
}

Los mismos tipos de dato de C# y VB.NET modifican el método ToString para mostrar el valor en texto que se requiere.

int numero = 10;
numero.ToString(); // Devuelve "10".
numero.ToString("0000"); // Devuelve "0010";
double otro = 10.356;
otro.ToString("00.0"); // Devuelve "10.4";
DateTime fecha = new DateTime(2011,11,10);
fecha.ToString("yyyy-MM-dd"); // Devuelve "2011-11-10";
fecha.ToString("yyyy dd hh tt"); // Devuelve "2011 10 12 am";

Con todo esto, ToString termina siendo un método muy útil, y es indispensable saber utilizarlo para los datos que mostraremos al usuario de la aplicación.

Anuncio publicitario

2 comentarios sobre “ToString

  1. Las 2 lineas de codigo, dan el resultado, pero cual es la mas conveniente usar?

    txtResul.Text = (Convert.ToInt32(txtNum1.Text) + Convert.ToInt32(txtNum2.Text)).ToString();

    txtResul.Text = Convert.ToString(Convert.ToInt32(txtNum1.Text) + Convert.ToInt32(txtNum2.Text));

Responder a gaby Cancelar la respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s