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**
}
}
}
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-制造一个人类可读的文本字符串,用于描述类的实例