ToString()方法有什么意义?

som*_*one 2 .net c#

有人可以帮我解释一下这个怎么样?

ToString()如果没有创建实际的方法,怎么可能返回任何东西呢?

using System;

namespace ConsoleApplication4
{
    class Person
    {

        private string name;
        private int age;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        **/*  
         * What is ToString() method?
         * What I am overriding Here?
         */**
        public override string ToString()
        {
            return "Name= " + Name + " Age=" + Age;
        }        
    }
    class Sample
    {
        static void Main(string[] args)
        {
            Person P1 = new Person();
            P1.Name = "ABC";
            P1.Age = 21;
            Console.WriteLine(P1.ToString());
            Console.ReadLine();

            **//Ouput Name = ABC Age = 23**
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 11

C#中的所有类和结构都是隐式派生的System.Object.你是压倒性的Object.ToString.

在C#中,当你写:

class Person
{
Run Code Online (Sandbox Code Playgroud)

它与写作实际上是一样的

class Person : System.Object
{
Run Code Online (Sandbox Code Playgroud)

如何在不创建实际方法的情况下从ToString()返回任何内容?

如果你不覆盖ToString,你将获得提供的默认实现System.Object.ToString().

隐式基类存在System.Object于C#语言规范的4.2.2中:

对象类类型是所有其他类型的最终基类.C#中的每个类型都直接或间接地从对象类类型派生.

关键字对象只是预定义类System.Object的别名.

请注意,它与自定义略有不同struct,因为值类型派生自System.ValueTypeSystem.Object仍然是继承层次结构的一部分.

这在C#语言规范的4.1.1中有记录:

所有值类型都隐式继承自System.ValueType类,而System.ValueType又继承自类对象.任何类型都不可能从值类型派生,因此值类型被隐式密封(第10.1.1.2节).

请注意,System.ValueType本身不是值类型.相反,它是一个类类型,从中自动派生所有值类型.