2013-03-18 2 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

показать класс User ... –

+2

Поскольку вы не вызываете конструктор без параметров в любом месте, ясно, что вы не показали нам код, который генерирует ошибку. – Servy

+4

[Вы особенно не искали] (http://stackoverflow.com/questions/7230544/c-sharp-error-parent-does-not-contain-a-constructor-that-takes-0-arguments) – AlexFoxGill

ответ

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

0

При запуске программы, это ошибка, которую вы получите

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

Это сообщение само собой разумеется, что вотсутствует без параметров constuctorкласс.

Добавить конструктор без параметров в классе User (если он редактируется и не в какой-то DLL. В противном случае не возможно) что-то вроде

public User() 
{} 

ИЛИ

если пользователь содержит конструктор с параметром, использования, например

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

Это предполагает, что конструктор без параметров имеет смысл для этого класса. Это не так. OP также может не иметь возможности модифицировать этот класс. – Servy

+2

Ваш синтаксис для вызова конструктора базового класса неверен. – Servy

0

Я подозреваю, что ваш класс User не содержит конструктора r без аргументов. Поэтому при построении экземпляра Buyer он не знает, как построить базовый класс.

Чтобы решить эту проблему, создайте пустой конструктор в классе Buyer и вызовите конструктор из базового класса (User).

2

Эта ошибка возникает, если базовый класс (Пользователь) имеет конструктор, который принимает хотя бы один аргумент, но не имеет конструктора без аргументов.

Так что это нормально:

class User 
{ 
} 

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

Поскольку пользователь не имеет никаких конструкторов, по умолчанию «скрытый» конструктор с 0 аргументов автоматически создается для вас компилятором.

Но это приведет к ошибке вы видели («„User“не содержит конструктор, который принимает аргументы„0“»):

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

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

Поскольку пользователь теперь имеет явный конструктор, конструктор не по умолчанию 0 компилятором будет создано 0 аргументов. Вы можете добавить конструктор аргументов 0 для пользователя, но часто в этой ситуации разработчик класса User намеревается вызвать конструктор User и предоставить соответствующий аргумент, например.,

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

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

    public void AuctionWon() 
    { 
    } 
} 

теперь добавил конструктор к покупателю, который вызывает существующий конструктор пользователя, снабжая соответствующий аргумент к нему.

Смежные вопросы