首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造函数0参数错误

构造函数0参数错误
EN

Stack Overflow用户
提问于 2012-03-08 01:47:26
回答 6查看 347关注 0票数 0

我正在制作一个运动日历,上面有场地、赛事和运动员。

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

代码语言:javascript
复制
//Method to add a new Venue to program
    public void addVenue(Venue v)
    {
        m_Venue.Add(new Venue());
    }

上面的代码在新的地点(m_Venue.Add())出现错误;

代码语言:javascript
复制
    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的构造函数。

基本上,我是创建一个新的构造函数还是修改第一个提取

提前感谢

丹尼尔

EN

回答 6

Stack Overflow用户

发布于 2012-03-08 01:48:53

从您的代码看,您似乎正在尝试将v添加到m_Venue中,因此您应该这样说

代码语言:javascript
复制
public void addVenue(Venue v) {
    m_Venue.Add(v);
}

您希望添加作为参数v传入的Venue实例,而不是添加一个新实例,如果存在无参数构造函数,则new Venue()将创建一个新实例。

票数 5
EN

Stack Overflow用户

发布于 2012-03-08 01:49:13

我认为您的addVenue方法不正确

代码语言:javascript
复制
public void addVenue(Venue v)
{
    // add the provided instance, not a NEW one
    m_Venue.Add(v);
}
票数 5
EN

Stack Overflow用户

发布于 2012-03-08 02:07:25

在C#中,除非显式创建构造函数,否则所有非静态类都有一个隐式的缺省、无参数(无参数)构造函数。定义任何构造函数的行为意味着不再有隐式构造函数。在这种情况下,您的类有一个接受两个参数的构造函数,因此,您没有隐式构造函数。你的编译器捕捉到了它。您需要a)添加一个无参数的构造函数,或者b)更改您的实例化(新地点..)使用现有的构造函数。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9606557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档