C# Error: Parent Does Not Contain a Constructor That Takes 0 Arguments

C# Error: Parent does not contain a constructor that takes 0 arguments

Since you don't explicitly invoke a parent constructor as part of your child class constructor, there is an implicit call to a parameterless parent constructor inserted. That constructor does not exist, and so you get that error.

To correct the situation, you need to add an explicit call:

public Child(int i) : base(i)
{
Console.WriteLine("child");
}

Or, you can just add a parameterless parent constructor:

protected Parent() { } 

Parent does not contain a constructor that takes 0 arguments

You need to call one of the base constructors in your derived class. Assuming you are using the Android EditText widget:

public class numerictext : EditText
{
public numerictext(Context context) : base(context)
//^^^^^^^^^^^^^^^
//Note how we are now calling the base constructure
{
//empty or you can add your own code
}

public numerictext(Context context, IAttributeSet attrs) : base(context, attrs)
{
}

//etc
}

Class does not contain a constructor that takes 0 arguments

The error is telling you that the Malicious constructor can't find a suitable constructor to chain to in its base class (MaliciousSmall).

The initial problem is that your derived class constructor implicitly contains this constructor:

public Malicious() : base()
{
}

Or even when you've added an explicit constructor, it's still trying to chain to a parameterless one:

public Malicious(DataRow row) : base()
{
}

... but there is no such parameterless constructor in the base class (MaliciousSmall), hence the error.

I think you want to chain to the constructor taking a row (the one you have declared in MaliciousSmall):

public Malicious(DataRow row) : base(row)
{
}

That's assuming you always want a row to be provided to the constructor. If you actually want to allow an instance to be created without specifying a row, then you need to add a parameterless constructor to the base class:

public MaliciousSmall()
{
// Set fields/properties to some default values
}

You'd probably then want your derived class to have two constructors:

public Malicious() // Implicitly chain to the parameterless base constructor
{
}

public Malicious(DataRow row) : base(row) // Chain to parameterized constructor
{
}

See my article on constructor chaining for more details.

Parent does not contain constructor that takes 0 arguments

You can create a constructor in Child, e.g.

public Child(int x) : base(x)
{
}

Constructors are not inherited - but if you don't supply any constructors at all, the C# compiler tries to create one equivalent to this:

public Child() : base()
{
}

That's what's failing here, because there isn't a parameterless base constructor to call.

Your derived class constructor doesn't have to have the same parameters as the base class constructor of course - so long as it passes appropriate arguments to a base constructor, that's fine. For example, you could write:

public Child() : base(0) // Default to x = 0
{
}

See my article on constructors for more details.

Does not contain a constructor that takes 0 arguments exception

Just as the error states, that class has no constructor which takes zero arguments. Here is its only constructor:

public EFProductRepository(EFDbContext context)
{
_context = context;
}

So in order to create a new instance, you need to pass it an instance of an EFDbContext context, which you're not doing here:

new EFProductRepository<Product>()

Either supply that constructor call with an instance of an EFDbContext, or add a constructor to the class which doesn't require one.

Error: Does not contain a constructor that takes 0 arguments

You need to add a default parameterless constructor manually

public Holiday ()
{
...
}

Probably you are trying to create a Holiday instance without passing any parameter like this:

var holiday = new Holiday();

or:

var cultural = new CulturalHoliday();

By default all classes inherit a default parameterless constructor from Object class.But if you add a constructor that takes some arguments,you need to add parameterless constructor manually.

C# Error: does not contain a constructor that takes 0 arguments

clieList.Add(new Client() //This is where the error is
{
Code = Convert.ToInt32(txt_cod.Text),
Name = txt_name.Text,
Phone = Convert.ToInt32(txt_phone.Text),
Email = txt_email.Text,
});

This is not constructor call you're looking for. It's parameterless constructor call + property initialization syntax. It doesn't work, because you class doesn't have parameterless constructor defined.

What you're looking for is:

clieList.Add(new Client(Convert.ToInt32(txt_cod.Text),
txt_name.Text,
Convert.ToInt32(txt_phone.Text),
txt_email.Text));

Why am I getting a does not contain a constructor that takes 0 arguments error? C#

That is because the CharityCyclists class does not have a constructor that takes no arguments.

The C# compiler will generate the default constructor for you, if you define no other constructors.
If you define a constructor yourself (as you have), the C# compiler will not generate a default constructor.

If you want to allow CharityCyclists to be constructed without parameters, add this code to the class:

public CharityCyclists() 
{}


Related Topics



Leave a reply



Submit