2013-02-21 83 views
2

我正在處理一個具有不同書籍通用列表的程序。我的問題是,我的書類應該重寫超System.Object方法ToString()使其顯示像這樣的字符串:重寫方法ToString()c#console應用程序

 
authorFirstName, authorLastName, "bookTitle", year. 

,這裏是我的書類代碼:

class Book 
{ 
    public string bookTitle 
    { 
     get; 
     set; 
    } 

    public string authorFirstName 
    { 
     get; 
     set; 
    } 

    public string authorLastName 
    { 
     get; 
     set; 
    } 

    public int publicationYear 
    { 
     get; 
     set; 
    } 


} 

這裏是我的Main代碼:

static void Main(string[] args) 
    { 

     List<Book> books = new List<Book>(); 
     books.Add(new Book { authorFirstName = "Dumas", authorLastName = "Alexandre", bookTitle = "The Count Of Monte Cristo", publicationYear = 1844 }); 
     books.Add(new Book { authorFirstName = "Clark", authorLastName = "Arthur C", bookTitle = "Rendezvous with Rama", publicationYear = 1972 }); 
     books.Add(new Book { authorFirstName = "Dumas", authorLastName = "Alexandre", bookTitle = "The Three Musketeers", publicationYear = 1844 }); 
     books.Add(new Book { authorFirstName = "Defoe", authorLastName = "Daniel", bookTitle = "Robinson Cruise", publicationYear = 1719 }); 
     books.Add(new Book { authorFirstName = "Clark", authorLastName = "Arthur C", bookTitle = "2001: A space Odyssey", publicationYear = 1968 }); 
    } 

所以對我應該做什麼的任何想法「覆蓋的方法ToString()在超System.Object,使其返回一個字符串具有以下格式:」

 
authorFirstName, authorLastName, "bookTitle", year. 
+0

代碼正在編譯但與StackOverflow失敗。你的屬性設置不正確。將它們更改爲:'private string _bookTitle; 公共字符串bookTitle { get {return _bookTitle; } set {_bookTitle = value; } }' – Nogard 2013-02-21 08:26:02

回答

0

不能覆蓋system.Object.ToString()

但是你可以實現你自己的收藏這確實

,或者你讓一個Extensionmethod到列表「ListToMyStringFormat」,可以在列表上被稱爲

+0

嗯..好吧,那麼在超類System.Object中重寫方法ToString()是什麼意思? – user2057693 2013-02-21 08:23:40

+0

@ user2057693這意味着.NET中的每個對象都從'System.Object'繼承,它具有'ToString()'方法。如果你想在你的類中覆蓋該方法(在本例中爲'Book'),你只需要使用我在我的答案中使用的語法。 – 2013-02-21 08:25:41

+0

ahaa好的.. Thx很棒! – user2057693 2013-02-21 08:30:36

4

請看下圖:

class Book 
{ 
    public string bookTitle 
    { 
     get {return bookTitle; } 
     set {bookTitle = value; } 
    } 

    ... 

    public override string ToString() { 
     return string.Format("{0}, {1}, {2}, {3}", 
         authorFirstName, authorLastName, bookTitle, 
         publicationYear); 
    } 
} 
0

下面是例子,如何做到這一點:

public class User 
{ 
    public Int32 Id { get; set; } 
    public String Name { get; set; } 
    public List<Article> Article { get; set; } 

    public String Surname { get; set; } 

    public override string ToString() 
    { 
     return Id.ToString() + Name + Surname; 
    } 
} 
0

我們需要覆蓋到字符串中的Book類,而不是在System.Object。將以下函數添加到Book類。

public override string ToString() 
{ 
    return this.authorFirstName + ", " + this.authorLastName + ", " + this.bookTitle + "," + this.publicationYear.ToString(); 
}