當(dāng)前位置:首頁(yè) > IT技術(shù) > Windows編程 > 正文

C# 如何重寫(xiě)ToString函數(shù)及重寫(xiě)的意義
2021-09-23 17:42:02

轉(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/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >