C# 构造函数0参数错误

C# 构造函数0参数错误,c#,constructor,compiler-errors,arguments,C#,Constructor,Compiler Errors,Arguments,我正在制作一个有场地、项目和运动员的运动日历 基本上,当我尝试运行该程序时,我会得到一个错误,即Sport2012.Venue不包含接受0个参数的构造函数 //Method to add a new Venue to program public void addVenue(Venue v) { m_Venue.Add(new Venue()); } m_场馆的上述代码错误。添加新场馆 public String m_venueName;

我正在制作一个有场地、项目和运动员的运动日历

基本上,当我尝试运行该程序时,我会得到一个错误,即Sport2012.Venue不包含接受0个参数的构造函数

//Method to add a new Venue to program
    public void addVenue(Venue v)
    {
        m_Venue.Add(new Venue());
    }
m_场馆的上述代码错误。添加新场馆

    public String m_venueName;
    public String m_venueAddress;
    private List<Event> m_Events;

    public Venue(String venueName, String venueAddress)
    {
        m_venueName = venueName;
        m_venueAddress = venueAddress;
        m_Events = new List<Event>();
    }
上面的代码显示Sport2012.Venue的构造函数

基本上我是创建一个新的构造函数还是修改第一个摘要

提前谢谢


Daniel

从您的代码来看,似乎您正在尝试将v添加到m_场地,所以您应该说

public void addVenue(Venue v) {
    m_Venue.Add(v);
}

您希望添加作为参数v传入的场地实例,而不是新实例,如果存在无参数构造函数,新场地将创建新实例。

我想您的addVenue方法不正确

public void addVenue(Venue v)
{
    // add the provided instance, not a NEW one
    m_Venue.Add(v);
}

m_Vince.Addnew Venuelowns,伦敦

如果add-venture方法已经接受了一个场所,那么只需执行m_-venue.Addv即可

m_Venue.Add(v); would get rid of that error
在定义构造函数之前,C中的所有类都有一个默认构造函数,其中一个具有0个参数。
一旦您明确定义了一个构造函数,您还需要添加一个带有0个参数的构造函数,如果这是您需要的

这里有两个小的概念错误

第一个问题是您正在创建一个没有参数的新场地->。添加新场地。场馆的建设者有两条线。这是编译错误的来源。新增Venuefoo酒吧;例如,将编译


第二个问题是,您正在将地点传递给addVenue方法,但没有将其添加到列表中。你可能是指m_vention.Addv;这可能是您应该做的。

在C中,所有非静态类都有一个隐式默认的无参数无参数构造函数,除非您显式创建构造函数。定义任何构造函数的行为意味着不再存在隐式构造函数。在本例中,您的类有一个接受两个参数的构造函数,因此,您没有隐式构造函数。你的编译器捕捉到了它。您需要添加一个无参数构造函数或更改实例化新地点。。使用现有的构造函数

首先要知道为什么构造函数会接受这些参数。您的场馆对象是否可以在没有姓名或地址的情况下“工作”?还有,是否有其他方法提供名称或地址,例如,使用公共属性设置器。如果是这样的话,你可以把它们看作是可选的。在这种情况下,您现有的构造函数是为了方便,您可以安全地添加一个无参数构造函数。如果您绝对需要场馆名称/地址,并且在不破坏封装的情况下无法设置它们,那么您应该更改实例化逻辑以提供参数

//Method to add a new Venue to program
    public void addVenue(Venue v)
    {
        m_Venue.Add(new Venue());
    }

好的经验法则是,对象的创建者通过构造函数向对象提供其基本组件/服务/依赖项。可选组件/服务/依赖项可以在构建后提供。

不确定为什么会被否决…….我不想在这里闲逛,但你可能花了比搜索错误源更多的时间键入此帖子。。。编辑:J_mcnally拒绝投票,因为问题是无意义的错误是使用不存在的构造函数造成的。在类中定义任何构造函数时,默认构造函数将消失。场地只有一个构造函数,它需要两个参数。正如答案所提到的,代码首先可能在语义上是错误的。