0

我有一个类(我们称之为Class1),它继承了另一个类(Class2)。我想要做的是在 Class1 中继承时在 Class2 中运行 costructor 方法。

我想它必须看起来像这样:

// Class1
public class Class1 : Class2
{
    public Class1()
    {

    }
}
// Class2
public class Class2
{
    public Class2()
    {
        //this is the function I want to run
    }
}

但我不能让它像这样工作。
有没有办法做到这一点,而实际上不必从 Class1 调用 Class2() 构造函数?

4

2 回答 2

6

您错误地声明了构造函数。删除void关键字:

// Class1 
public class Class1 : Class2 
{ 
    public Class1() 
    { 

    } 
} 
// Class2 
public class Class2 
{ 
    public Class2() 
    { 
        //this is the function I want to run 
    } 
} 

基类的默认构造函数将自动运行。如果你想调用一个非默认的构造函数,你可以这样做:

// Class1 
public class Class1 : Class2 
{ 
    public Class1() : base("argument")
    { 

    } 
} 
// Class2 
public class Class2 
{ 
    public Class2() 
    { 
    } 
    public Class2(string theParameter)
    {
        //code for initializing the object with the string parameter 
    }
} 
于 2012-08-30T17:36:47.023 回答
0

你总是调用Class2's 的构造函数。如果您没有调用代码,base()它会为您添加。如果Class2没有无参数构造函数,并且您没有显式调用基本构造函数,则会出现编译错误。

如果你有一个Class1你必须有一个Class2构造;C_Sharp_Developer没有第一个,你就不可能有一个Person

于 2012-08-30T17:41:30.937 回答