【问题标题】:Error: Does not contain a constructor that takes 0 arguments错误:不包含采用 0 个参数的构造函数
【发布时间】:2014-01-08 15:58:39
【问题描述】:

我从下面的 c# 代码中收到错误“不包含采用 0 个参数的构造函数”:

 public class Holiday
{

    string startDate, endDate, firstName, lastName, emailAddress, numberOfGuests;
    private double Cost = 100;
    public Holiday(string start, string end, string first, string last, string email, string guestCount)
    {
        startDate = start;
        endDate = end;
        firstName = first;
        lastName = last;
        emailAddress = email;
        numberOfGuests = guestCount;
    }

    public double test
    {
        get { return Cost; }
    }
}
 public class AdventureHoliday : Holiday
{
    public AdventureHoliday(string start, string end, string first, string last, string email, string guestCount)
        : base(start, end, first, last, email, guestCount)
    {
    }
    public double totalcost()
    {
        double adventureAdditional = 0.50;
        double xcost = test + (test * adventureAdditional);
        return xcost;
    }
}

public class CulturalHoliday : Holiday
{

    public CulturalHoliday(string start, string end, string first, string last, string email, string guestCount)
        : base(start, end, first, last, email, guestCount)
    {
    }
    public double totalcost()
    {
        double culturalAdditional = 1.0;
        double xcost = test + (test * culturalAdditional);
        return xcost;
    }

我查看了这个问题的各种线程,它们似乎都表明应该通过添加来解决问题:

: base(start, end, first, last, email, guestCount)

我已将此添加到第二类中,但仍然出现错误。我在第 201 行和第 125 行的冒险假期和文化假期都得到了这个 (公开课 AdventureHoliday : Holiday)

public class CulturalHoliday : Holiday

有人有什么想法吗?对不起,如果我错过了一些愚蠢的事情。提前致谢

【问题讨论】:

  • 究竟是哪一行给了你错误?是编译时错误还是运行时错误?
  • 显示课程Holiday。您还没有显示调用无参数构造函数的代码。
  • 抱歉错过了假期。现已添加。
  • 添加行号信息
  • @user3174012:您的代码仍然没有问题。顺便说一句,而不是提及行号(我们看不到),您应该告诉我们您在哪些行上得到了编译器(?)错误。

标签: c# inheritance


【解决方案1】:

你需要手动添加一个默认的parameterless构造函数

public Holiday ()
{ 
   ...
}

您可能正在尝试创建一个 Holiday 实例而不传递任何这样的参数:

var holiday = new Holiday();

或:

var cultural = new CulturalHoliday();

默认所有类都从Object类继承一个默认的无参数构造函数。但是如果你添加一个带参数的构造函数,你需要手动添加无参数构造函数。

【讨论】:

    【解决方案2】:

    问题出在其他地方,除非类被序列化,否则您不需要无参数构造函数。

    您必须提供更多信息,即引发错误的确切行、Holiday 类的构造函数(至少是签名)以及Holiday 类继承自哪些类。

    【讨论】:

    • 如果该类用作需要new() 的泛型参数,那么您将需要一个无参数的默认构造函数。
    猜你喜欢
    • 2013-02-16
    • 2011-11-06
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多