簡體   English   中英

在C#中覆蓋ToString()的工作

[英]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即可自動打印此人的詳細信息

請參閱: Console.WriteLine

如果value為Nothing,則僅寫入行終止符。 否則,將調用value的ToString方法以生成其字符串表示形式,並將結果字符串寫入標准輸出流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM