重载基础构造函数

时间:2012-07-12 15:16:20

标签: c# asp.net c#-4.0

我有一个这样的课程:

public class foo
{
    public foo(string a, string b) { ... }
}

我想做这样的事情:

public class bar : foo
{
    public bar()
    {
        base = base("apple", "banana");
    }
}

Visual Studio对我大吼:

'foo' does not contain a constructor that takes 0 arguments

有办法做到这一点吗?

5 个答案:

答案 0 :(得分:7)

这是做到这一点的方法:

public class foo
{
    public foo(string a, string b) { ... }
}

public class bar : foo
{
    public bar(): base("apple", "banana") // call base constructor
    {

    }
}

参考:Using Constructors (C# Programming Guide)

答案 1 :(得分:3)

像这样改写:

public bar() :
    base("apple", "banana");
{
}

答案 2 :(得分:1)

试试这个:

public class bar : foo
{
    public bar() : base("apple", "banana")
    {
    }
}

此致

答案 3 :(得分:1)

您需要执行以下操作。本质上,您告诉编译器使用哪个构造函数,因为没有可用的默认构造函数。

public class foo
{
    public foo(string a, string b) { }
}

public class bar : foo
{
    public bar()
        : base("apple", "banana")
    {
    }
}

答案 4 :(得分:1)

您只需更改条形构造函数即可正确调用基础构造函数。

public class bar : foo 
{ 
  public bar() :  base("apple", "banana")
  { 
  }
}