How can I call a base class's parameterized constructor from a derived class if the derived class has no parameterized constructor?
I have a base class with two constructors: 开发者_如何学Ca default constructor and a parameterized constructor. Another class inherits from that base class and it only has a default constructor. How can I call the base class's parameterized constructor from the derived class?
It's not entirely clear what your question is, but I suspect you either want to add an explicit parameterless constructor to your child class:
// Parameterless child constructor calling parameterized base constructor
public Child() : base("foo", "bar") {
}
or add both a parameterized and parameterless one:
public Child() {
}
public Child(string foo, string bar) : base(foo, bar) {
}
Note that constructors aren't inherited - so just because a base class has a particular constructor signature doesn't mean you can instantiate a class using that signature. The child class has to provide it itself.
Any compiler-provided parameterless constructor will always call the parameterless constructor of its base class.
Something like this?
class Parent
{
public Parent(){}
public Parent(string s) {}
}
class Child : Parent
{
public Child() : base("42") { }
}
Here you go:
// Parent class
class Parent
{
public Parent()
{
// Paremeterless constructor
}
public Parent(string a, int b)
{
// Paremterised constructor
}
}
// Child class
class Child : Parent
{
public Child()
:base("hi", 10)
{
// Parameterized constructor of the base class is invoked
}
}
精彩评论