在C#中重写ToString()的工作

Sik*_*der 0 c# asp.net oop overriding

我刚刚通过官方msdn文档的代码.这看起来非常简单,但有一点我无法理解,当我们为Person创建对象时,tostring overrided method我们正在给出一些值,现在没有调用这个函数只是一个对象被传递给WriteLine并且它会自动打印人的详细信息它发生了吗,有人请解释一下..

using System;
class Person
{
    private string myName ="N/A";

    // Declare a Name property of type string:
    public string Name
    {
        get 
        {
           return myName; 
        }
        set 
        {
           myName = value; 
        }
    }
    public override string ToString()
    {
        return "Name = " + Name ;
    }

    public static void Main()
    {
        Person person = new Person();
        Console.WriteLine("Person details - {0}", person);
        person.Name = "Joe";
        Console.WriteLine("Person details - {0}", person);


    }
}
Run Code Online (Sandbox Code Playgroud)

产量

Person details - Name = N/A 
Person details - Name = Joe 
Run Code Online (Sandbox Code Playgroud)

Bra*_*NET 5

将对象传递给Console.WriteLine .ToString()时,将调用任何对象.传递对象时,大多数控件也以这种方式工作.

基本上,UI不知道如何显示类,因此.NET提供了.ToString方法,因此它可以显示某些内容.如果您不覆盖它,请注意默认值为您提供完全限定名称和其他一些垃圾.覆盖使您可以使该功能有用.