2013-03-18 51 views
-1

我很困惑,爲什麼這將無法運行。「類不包含構造函數取0參數」

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication3 
{ 
    class Buyer : User 
    { 
     public void AuctionWon() 
     { 
     } 
    } 
} 

我得到「不包含帶0參數的構造函數」。我已經在手邊尋找幫助,但沒有結果在哪裏有幫助。

這是用戶級

public class User 
{ 

    private int accountNo; 
    private int password; 

    public User(int accountNo, int password) 
    { 
     this.accountNo = accountNo; 
     this.password = password; 

    } 

    public bool Validatepassword(int userpassword) 
    { 
     if (password == userpassword) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public int GetAccountNo() 
    { 
     return accountNo; 
    } 
} 
+0

請顯示class User ... – 2013-03-18 17:24:09

+2

由於您不在任何位置調用無參數構造函數,因此顯然您沒有向我們顯示生成錯誤的代碼。 – Servy 2013-03-18 17:24:10

+4

[你沒有特別難搜](http://stackoverflow.com/questions/7230544/c-sharp-error-parent-does-not-contain-a-constructor-that-takes-0-arguments) – AlexFoxGill 2013-03-18 17:24:36

回答

12

好像你的基類(User類),不具備具有0參數構造函數的任何。

您的用戶類有一個構造是這樣的:

public class User 
{ 
    public User(int accountNo, int password) 
    { 
     this.accountNo = accountNo; 
     this.password = password; 

    } 
} 

和買家必須繼承,如:

public class Buyer : User 
    { 
     public Buyer(int accountNo, int password) : base(accountNo, password) 
     { 
     } 

     public void AuctionWon() 
     { 
     } 
    } 
+0

謝謝,我會試試這個。 – Davison89 2013-03-18 17:35:47

0

當你運行你的程序,這是你獲得

錯誤
'ConsoleApplication3.User' does not contain a constructor that takes 0 arguments 

此消息是自解釋的,沒有參constuctor在User類。

添加在User類參數的構造函數(如果它可編輯的,而不是在某一個DLL文件,否則是不可能的)像

public User() 
{} 

OR

如果用戶包含的參數,使用構造函數像這樣

public class Buyer : User 
{ 
    public Buyer() : base(FooBar) 
    { 
    } 
} 
+0

這是假設一個無參數的構造函數對該類有意義。它可能不會。 OP也可能沒有修改該類的能力。 – Servy 2013-03-18 17:25:45

+2

您調用基類的構造函數的語法不正確。 – Servy 2013-03-18 17:28:58

0

我懷疑你的User類不包含構造函數不帶任何參數。因此,構建的Buyer一個實例時,它是不知道如何構建的基類。

爲了解決這個問題:在你Buyer類中創建一個空的構造,並有它調用基類(User)構造函數。

2

此錯誤發生如果基類(用戶)具有一個構造函數的至少一個參數,但不具有不帶參數的構造函數。

所以這是確定:

class User 
{ 
} 

class Buyer : User 
{ 
    public void AuctionWon() 
    { 
    } 
} 

因爲用戶沒有任何構造函數,一個默認的「隱藏」的構造與0參數自動爲您編譯器創建。

但是,這會導致你看到的錯誤(「‘用戶’不包含一個構造函數‘0’參數」):

class User 
{ 
    public User(string text) 
    { 
    } 
} 

class Buyer : User 
{ 
    public void AuctionWon() 
    { 
    } 
} 

因爲用戶現在有一個明確的構造函數,沒有默認構造函數編譯器將創建0個參數。你可以一0參數的構造函數添加到用戶,但往往在這種情況下,用戶類的設計者想讓你撥打的用戶構造,並提供適當的參數,例如,

class User 
{ 
    public User(string text) 
    { 
    } 
} 

class Buyer : User 
{ 
    public Buyer() : base("Adam") 
    { 
    } 

    public void AuctionWon() 
    { 
    } 
} 

我們現在已經添加了一個構造函數買家調用現有的用戶構造,提供適當的參數給它。

相關問題