2012-12-18 105 views
0

我试图扩展一个没有0参数构造函数的类,并且因为我没有在我的子类中使用一个,但似乎vs生成一,为什么,我必须改变什么?感谢:没有0参数的构造函数,但没有使用

public abstract class BasicQuestPart 
{ 
    public String question { get; set; } 
    public BasicQuestPart(String question) 
    { 
     this.question = question; 
    } 

} 

class MultipleChoice : BasicQuestPart 
{ 
    //In this class I get the 0-arguments error 
    public MultipleChoice(String question) 
     : base(question) 
    { 
    } 
} 
+2

你在哪里初始化'MultipleChoice'实例? –

+1

c#中的每个类都有一个默认的构造函数(0-参数构造函数),即使你不写一个。 –

+5

@CodeIgnoto:这只对结构而言,不适用于类。 –

回答

1

VS不生成构造函数,C#编译器。

如果你自己指定一个构造函数,那么就不会有隐式的“0-参数构造函数”。

所以你的情况,你需要一个字符串,并将其传递给它的基类的构造函数:

public MultipleChoice(String question) : base(question) 

如果编译器给你的线沿线的一个错误“有0没有构造对于选择题类”的论点,那么你尝试做在你的代码这个地方:

new MultipleChoice(); //No argument! 

但你不能这样做,因为你删除的隐含0参数的构造函数,当你添加一个需要串!

你可以通过传递一个字符串解决这个问题:

new MultipleChoice("Does this solve your problem?"); //Now with a string argument! 
0

你在你的XAML代码使用*选择题*?

仅当您尝试使用无参数构造函数实例化您的类时,才会显示此消息。除了新的MultipleChoice()语句外,无参数构造函数也可以被XAML或依赖注入框架使用。

每个XAML标签对应于使用无参数构造函数实例化的对象。属性被传递给对象的相应的依赖属性。

下面的代码将尝试使用参数的构造函数来创建一个选择题对象:

<MultipleChoice question="This is my question"/> 

你的类将无法正常工作,当然这种方式,因为你have't宣布问题作为一个依赖属性然而。

像MEF这样的依赖注入框架也使用无参数构造函数,除非正确配置。

相关问题