轉(zhuǎn)載:?https://blog.csdn.net/BillCYJ/article/details/90519331
?
?
眾所周知,C#的每一個(gè)類(lèi)和結(jié)構(gòu)都隱式繼承自System.Object,而Object提供了ToString()虛方法,所以任何類(lèi)的對(duì)象都有ToString()方法,該方法可以將對(duì)象轉(zhuǎn)化為字符串類(lèi)型(也可理解為:將數(shù)值或其它類(lèi)型對(duì)象轉(zhuǎn)換為字符串類(lèi)型),該方法為虛方法,可以重寫(xiě)。
舉例1:int32類(lèi)型重寫(xiě)了ToString(),將整數(shù)用字符串進(jìn)行表示。
int temp = 123;
Console.WriteLine(temp.ToString());
// 輸出:123
1
2
3
那么,我們自定義的類(lèi)如何重寫(xiě)ToString()呢?
舉例2:
namespace Test
{
class Person
{
public string name;
public int Height { get; set; }
public override string ToString()
{
return "Person: " + name + " " + Height;
}
}
}
// 在Main函數(shù)里使用重寫(xiě)后的ToString()
Person p= new Person { name = "jump", Height = 180 };
Console.WriteLine(p); // 等價(jià)于Console.WriteLine(p.ToString());
// 輸出:Person: jump 180
?
?
?
重寫(xiě)ToString()虛方法的意義:
如果不重寫(xiě)ToString(),那就只輸出了當(dāng)前對(duì)象所在命名空間及類(lèi)名,比如:例2如果不重寫(xiě)ToString(),輸出就是Test.Person;
如果重寫(xiě)ToString(),那就可以輸出我們想要的內(nèi)容,這樣可以讓輸出的結(jié)果更直觀更便于觀察或測(cè)試。
總結(jié):重寫(xiě)ToString()并沒(méi)有多高大上,不過(guò)如此,如果我們需要輸出這個(gè)對(duì)象的一些信息用于觀察或測(cè)試,那就直接重寫(xiě)ToString()。
Object類(lèi)的虛方法ToString()能被重寫(xiě)且有意義,那么同樣屬于Object類(lèi)的虛方法Equals()、GetHashCode()也能被重寫(xiě)且有意義。
?
?
?
?
————————————————
版權(quán)聲明:本文為CSDN博主「Real_JumpChen」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/BillCYJ/article/details/90519331
?
本文摘自 :https://www.cnblogs.com/