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

时间:2014-07-13 05:56:57

标签: 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();
    }
  }
}

7 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

您应该覆盖类中的ToString,以便为其提供所需的字符串表示形式。 Console.WriteLine方法根据MSDN调用ToString

  

否则,调用ToString value方法来生成它   字符串表示,并将结果字符串写入   标准输出流。

以此课程为例:

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

现在尝试显示它:

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

该类不会覆盖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);
    }
}

现在Console.WriteLine会返回42 - Ahmad

答案 2 :(得分:3)

任何对象的ToString()都应该返回该对象的字符串表示形式。在您的代码中,

Int32,它返回一个字符串对应的对象(整数的值)。

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

答案 3 :(得分:3)

添加更多信息,如果您反编译您的程序,您可以找到

Console.WriteLine(value.ToString())

上面一行会调用

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

虽然

  

Console.WriteLine(值);

上面一行会调用

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

如果你很想知道Cast是如何制作的(ToString),那么这可能对你有帮助。

答案 4 :(得分:2)

您可能知道Tostring()返回表示当前对象的字符串。你是对的(有和没有Tostring())会返回相同的结果,因为即使你不使用Tostring(),也会有一个隐式调用,因为Console.writeline()打印了一个字符串表示。

详细了解this here.

答案 5 :(得分:1)

当您将对象传递给WriteLine时,.NET会隐式调用ToString方法。

答案 6 :(得分:1)

在编程语言中,ToString()或其等价物用于以文本方式表示任何对象。或者简单地说,它只是用于将任何对象转换为纯字符串格式。