C# 构造函数0参数错误
我正在制作一个有场地、项目和运动员的运动日历 基本上,当我尝试运行该程序时,我会得到一个错误,即Sport2012.Venue不包含接受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;
//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拒绝投票,因为问题是无意义的错误是使用不存在的构造函数造成的。在类中定义任何构造函数时,默认构造函数将消失。场地只有一个构造函数,它需要两个参数。正如答案所提到的,代码首先可能在语义上是错误的。