繁体   English   中英

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

[英]What is the need of ToString() in 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();
    }
  }
}

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

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

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

以这堂课为例:

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

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

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

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

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

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),那么这可能会对您有所帮助。

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

在这里阅读更多相关信息

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM