Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化继承的类_C#_Class_Initialization - Fatal编程技术网

C# 初始化继承的类

C# 初始化继承的类,c#,class,initialization,C#,Class,Initialization,我有一个类(我们称之为Class1),它继承了另一个类(Class2)。 我要做的是在Class1继承的基础上运行Class2中的costructor方法 我想应该是这样的: // Class1 public class Class1 : Class2 { public Class1() { } } // Class2 public class Class2 { public Class2() { //this is the functi

我有一个类(我们称之为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 
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 
    }
} 
但我不能让它像这样工作。

有没有一种方法可以做到这一点,而不必从Class1调用Class2()构造函数方法?

您的构造函数声明不正确。删除
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()
    {

    }
}
// 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 
    }
} 

您错误地声明了构造函数。删除
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()
    {

    }
}
// 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 
    }
} 

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


如果您有一个
Class1
,那么您必须构造一个
Class2
;如果没有
,就不能有
C\u Sharp\u开发者

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


如果您有一个
Class1
,那么您必须构造一个
Class2
;如果没有
,你就不可能有一个
C\u Sharp\u开发者。

对不起,我的代码就是这样写的。我只是不假思索地把它们添加到这里。但这对我都不起作用。@GabiBarrientos你怎么知道它不起作用?您发布的代码(带有
void
关键字)将无法编译。是您的代码无法编译,还是正在编译但没有按照预期工作?因为我尝试运行Debug.WriteLine(“test”);在类2的构造函数中。但是使用你写下的第二段代码实际上对我很有用。谢谢我会接受这个作为我的答案,但我需要等几分钟,抱歉,我的代码中就是这样写的。我只是不假思索地把它们添加到这里。但这对我都不起作用。@GabiBarrientos你怎么知道它不起作用?您发布的代码(带有
void
关键字)将无法编译。是您的代码无法编译,还是正在编译但没有按照预期工作?因为我尝试运行Debug.WriteLine(“test”);在类2的构造函数中。但是使用你写下的第二段代码实际上对我很有用。谢谢我会接受这一点作为我的答案,但我需要等待几分钟构造函数不是方法或函数,它们只是构造函数。构造函数不是方法或函数,它们只是构造函数。第一段应该以“…你得到一个编译器错误”结尾(仔细想想,条件应该是“如果
Class2
没有可访问的无参数构造函数…”@phoog我更改了“编译错误”位,因为这正是我要写的。我会留下关于可访问性的问题,这样你的评论就可以和你在没有时的想法一样;第一段应该以“…”结尾。。。你得到了一个编译器错误。”(仔细想想,条件应该是“如果
Class2
没有可访问的无参数构造函数…”@phoog我更改了“编译错误”位,因为这正是我要写的。我会留下关于可访问性的要点,这样你的评论就可以在我没有的时候与你的想法一致;)