2016-01-26 31 views
1

中所需的形式參數我將此代碼片段用類將信息撤回爲objects。我仍然很菜鳥ClassObject programming所以我傾向於得到錯誤。現在我有一個問題,我絕對不明白。我嘗試過全能的Google,用不同的運營商替換部分代碼,並詢問我的同事程序員朋友。似乎沒有人知道發生了什麼。沒有任何參數對應於類

該問題發生在CompareBooks方法中,並且它一直告訴我我缺少formal parameter。有人曾建議在方法中使用:base,但它只創建了2個以上的錯誤。

namespace ClassProgram 
{ 
    class Book 
    { 
     public string name; 
     public int id; 
     public float price; 

     public void PrintBookInfo() 
     { 
      Console.WriteLine("--------------"); 
      Console.WriteLine("Book Name: " + this.name); 
      Console.WriteLine("Book Id: " + this.id); 
      Console.WriteLine("Book Price: " + this.price + " dollars"); 
     } 

     public void CompareBooks(Book book1) 
     { 
      if (this.price > book1.price) 
      { 
       Console.WriteLine(this.name + " is more expensive than " + book1.name); 
      } 
     } 

     class MainProgram 
     { 
      static void Main(string[] args) 
      { 
       Book book = new Book(); 
       book.name = "C# For Newbies"; 
       book.id = 01; 
       book.price = 10; 
       book.PrintBookInfo(); 
       book.CompareBooks(); 
       Book book1 = new Book(); 
       book1.name = "Lord Of The Rings"; 
       book1.id = 02; 
       book1.price = 5; 
       book1.PrintBookInfo(); 
      } 
     } 
    } 
} 

回答

3

你打電話時,你的book.CompareBooks();沒有Book對象作爲參數輸入。將此與您的簽名進行比較:

public void CompareBooks(Book book1) //the Book object is required in the input 

因此您收到了錯誤消息。 「形式參數」意指a-must參數(與C#中的合成糖optional-parameter相比)。這意味着你必須在方法的輸入參數中加入一些東西來調用它。

假設你MainProgram它像這樣運行:

Book book = new Book(); 
book.name = "C# For Newbies"; 
book.id = 01; 
book.price = 10; 
book.PrintBookInfo(); 
Book book1 = new Book(); 
book1.name = "Lord Of The Rings"; 
book1.id = 02; 
book1.price = 5; 
book1.PrintBookInfo(); 
book.CompareBooks(book1); //note that this has input now 

那麼你的代碼應該沒問題

+1

您創建一個在主函數不以任何方式使其可作爲書中對象命名爲「BOOK1」參數名爲「book1的」變量的事實。我將該函數重命名爲「CompareTo」,以便獲得book.CompareTo(otherBook) – gd73

+0

這解決了我的問題。我之前沒有在這個輸入參數上找到任何建議。現在,它比較了書籍和版畫「C#For Newbies比魔戒更昂貴」。謝謝! @Ian 被選爲最佳答案,因爲您闡述了最多,這有助於我進一步學習C#! – Mikex64

+1

@ Mikex64沒問題。 ;)很高興我能對你的學習有所幫助。 – Ian

1

您不提供到預訂第一個應該被比較的任何信息。我想你彪這樣的事情:

Book book = new Book(); 
book.name = "C# For Newbies"; 
book.id = 01; 
book.price = 10; 
book.PrintBookInfo(); 

Book book1 = new Book(); 
book1.name = "Lord Of The Rings"; 
book1.id = 02; 
book1.price = 5; 
book1.PrintBookInfo(); 

book.CompareBooks(book1); 
相關問題