¿Cuál es la necesidad de ToString () en C #?

Estoy usando el siguiente código en c sharp. Pero ambas declaraciones de WriteLine están dando el mismo resultado 25. Entonces, ¿cuál es la necesidad de convertir Tostring en C sharp? ¿Hay algún propósito especial?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sample { class Program { static void Main(string[] args) { int value = 25; Console.WriteLine(value.ToString()); Console.WriteLine(value); Console.ReadLine(); } } } 

Si entiendo su pregunta, el propósito de ToString() es proporcionar un mecanismo consistente para convertir objetos en cadenas. En su Console.WriteLine(value); Por ejemplo, está utilizando una versión sobrecargada de WriteLine que toma un int , pero en el caso general de usar un object el sistema necesita un mecanismo para proporcionar una representación textual.

Debería anular ToString en una clase para darle una representación de cadena deseada. El método Console.WriteLine llama a ToString , por MSDN :

De lo contrario, se ToString método de valor ToString para producir su representación de cadena, y la cadena resultante se escribe en el flujo de salida estándar.

Toma esta clase por ejemplo:

 public class Person { public int Id { get; set; } public string Name { get; set; } } 

Ahora intenta mostrarlo:

 Console.WriteLine(new Person { Id = 42, Name = "Ahmad" }); 

La clase no anula ToString , por lo que la salida es algo como: MyNamespace.Program+Person

Ahora, vamos a anular ToString para mostrar una representación de cadena más amigable:

 public class Person { public int Id { get; set; } public string Name { get; set; } public override string ToString() { return String.Format("{0} - {1}", Id, Name); } } 

Ahora la Console.WriteLine devuelve 42 - Ahmad .

Se ToString() el ToString() de cualquier objeto devuelve una representación de cadena de ese objeto. En su Código,

Int32, devuelve una cadena correspondiente al objeto (valor del entero).

 int value = 25; Console.WriteLine(value.ToString()); 

Agregando un poco más de información, si descomstack su progtwig puede encontrarlo

 Console.WriteLine(value.ToString()) 

La línea de arriba llamaría

 /**Methods are from mscorlib.dll**/ public virtual void Write(string value) { if (value != null) { this.Write(value.ToCharArray()); } } 

Mientras,

Console.WriteLine (valor);

La línea de arriba llamaría

  public virtual void Write(int value) { this.Write(value.ToString(this.FormatProvider)); } 

Si tienes curiosidad por saber cómo se hace el Elenco (ToString), entonces esto podría ayudarte.

Como sabrá, Tostring() devuelve una cadena que representa el objeto actual. Tiene razón, ambas líneas (con y sin Tostring() ) devolverían el mismo resultado porque incluso si no usa Tostring() , habrá una llamada implícita desde que Console.writeline() imprima una representación de cadena.

Lea más sobre esto aquí.

.NET está llamando implícitamente al método ToString cuando pasa el objeto a WriteLine.

En los lenguajes de progtwigción ToString () o su equivalente se usa para representar cualquier objeto textualmente. O simplemente se puede decir que solo se utiliza para convertir cualquier objeto a formato de cadena simple.