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