C#中ToString()的需求是什么?

abu*_*kar 8 c#

我在c sharp中使用下面的代码.但是两个WriteLine语句都给出了相同的结果25.那么在c sharp中转换Tostring需要什么?有什么特别的目的吗?

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();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 8

如果我理解你的问题,那么目的ToString()是提供一种将对象转换为字符串的一致机制.在您的Console.WriteLine(value);例子中,你正在使用的重载版本WriteLine,其采用int,但在使用中,一般情况下,object系统需要提供一个文字表述的机制.


Ahm*_*eed 5

您应该ToString在类中重写以为其提供所需的字符串表示形式.该Console.WriteLine方法ToString根据MSDN调用:

否则,ToString调用value方法以生成其字符串表示形式,并将结果字符串写入标准输出流.

以这堂课为例:

public class Person 
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在尝试显示它:

Console.WriteLine(new Person { Id = 42, Name = "Ahmad" });
Run Code Online (Sandbox Code Playgroud)

该类不会覆盖ToString,因此输出类似于:MyNamespace.Program+Person

现在,让我们覆盖ToString以显示更友好的字符串表示:

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

现在Console.WriteLine回归42 - Ahmad.