[英]Working of overrided ToString() in C#
我只是通過了msdn官方文檔中的以下代碼。 這看起來很簡單的代碼,但是我無法理解的一件事是,當我們為Person創建對象並且在tostring overrided method
我們給出了一些值,而現在沒有調用此函數。只是將一個對象傳遞給WriteLine並自動打印出這個人怎么回事,有人請解釋一下..
using System;
class Person
{
private string myName ="N/A";
// Declare a Name property of type string:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
public override string ToString()
{
return "Name = " + Name ;
}
public static void Main()
{
Person person = new Person();
Console.WriteLine("Person details - {0}", person);
person.Name = "Joe";
Console.WriteLine("Person details - {0}", person);
}
}
輸出量
Person details - Name = N/A
Person details - Name = Joe
將對象傳遞給Console.WriteLine .ToString()時,將調用任何對象。 傳遞對象時,大多數控件也以這種方式工作。
基本上,UI不知道如何顯示類,因此.NET提供了.ToString方法,因此它可以顯示某些內容 。 如果您不覆蓋它,請注意默認值會為您提供全限定名稱和其他一些垃圾。 通過覆蓋,您可以使該功能有用。
WriteLine方法在傳遞給它的任何對象上內部調用ToString。
在您的示例中,第一行將打印默認的“ n / a”,因為您尚未為對象分配名稱。 將名稱設置為“ Joe”后,第二行開始運行,該名稱內部覆蓋了默認的“ n / a”。 因此,在同一對象上再次調用ToString將返回name的新值。
從MSDN: Console.WriteLine Method (Object)
將指定對象的文本表示形式,后跟當前行終止符,寫入標准輸出流。
現在無需調用此函數,只需將一個對象傳遞給WriteLine即可自動打印此人的詳細信息
如果value為Nothing,則僅寫入行終止符。 否則,將調用value的ToString方法以生成其字符串表示形式,並將結果字符串寫入標准輸出流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.