ToString()方法的意义是什么

本文关键字:是什么 方法 ToString | 更新日期: 2023-09-27 18:26:55

有人能为我解释一下这是怎么回事吗??

在不创建实际方法的情况下,如何从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**
        }
    }
}

ToString()方法的意义是什么

C#中的所有类和结构都是从System.Object隐式派生的。您正在覆盖Object.ToString

在C#中,当你写:

class Person
{

这实际上与编写相同

class Person : System.Object
{

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

如果您不重写ToString,您将获得System.Object.ToString()提供的默认实现。

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

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

关键字object只是预定义类System.object.的别名

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

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

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

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

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

Object.ToString()的默认实现方式很简单:

return GetType().ToString();

这将返回类型的(非限定的)名称。如果您没有在Person类上重写它,那么它将返回"Person"

子类可以自由地重写此方法,以返回更有用的字符串,其中可能包括对象的一些状态,甚至是对象的人性化表示。(例如,DateTime就是这样做的。)

public override string正在创建一个方法,它恰好已经存在,因此override关键字用于表示您正在父类(System.Object)中重新定义方法。

更多信息请点击此处:http://msdn.microsoft.com/en-us/library/system.object.aspx

由于.NET Framework中的所有类都是从Object派生的,Object类中定义的每个方法在所有对象中都可用在系统中。派生类可以而且确实覆盖其中一些方法,包括:

  • Equals-支持对象之间的比较。

  • Finalize-在自动回收对象之前执行清理操作。

  • GetHashCode-生成一个与对象值相对应的数字,以支持哈希表的使用。

  • ToString-制造一个人类可读的文本字符串,用于描述类的实例