Your abstract class must have a default constructor. When you have any constructors in the subclasses that doesn't call the base class ctor means, compiler will automatically call base class's default ctor, therefore you must have one in base class.
Following demo will be helpful to understand ctor chaining in c#
class Base
{
public Base()
{
Console.WriteLine("Base() called");
}
public Base(int x)
{
Console.WriteLine("Base(int x) called");
}
}
class Sub : Base
{
public Sub()
{
Console.WriteLine("Sub() called");
}
}
and from within your Main() create
new Sub();
and observe the console output