C# 初始化继承的类
我有一个类(我们称之为Class1),它继承了另一个类(Class2)。 我要做的是在Class1继承的基础上运行Class2中的costructor方法 我想应该是这样的: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
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我更改了“编译错误”位,因为这正是我要写的。我会留下关于可访问性的要点,这样你的评论就可以在我没有的时候与你的想法一致;)