Parâmetros do Construtor e Herança

Novo no OOP e estou confuso com o funcionamento dos construtores de classe derivada ao herdar de uma classe base em C #.

Primeiro a classe base:

class BaseClass
{
    private string BaseOutput = null;

    public BaseClass(string BaseString)
    {
        BaseOutput = BaseString;
    }

    public virtual void PrintLine()
    {
        Console.WriteLine(BaseOutput);
    }
}

Aqui está a classe derivada:

class SubClass : BaseClass
{
    private string SubOutput = null;

    public SubClass(string BaseString, string SubString) : base(BaseString)
    {
        SubOutput = SubString;
    }

    public override void PrintLine()
    {
        Console.WriteLine(SubOutput);
    }
}

Finalmente, a parte principal do programa:

class Program
{
    static void Main(string[] args)
    {
        BaseClass theBase = new BaseClass("Text for BaseClass");
        SubClass theSub = new SubClass("2nd param", "Text for SubClass");

        theBase.PrintLine();
        theSub.PrintLine();

        Console.ReadKey();
    }
}

O que eu não entendo é porque, ao chamar o construtor para a classe derivada, eu também tenho que passar o parâmetro que a classe base precisa. O campo BaseOutput na classe derivada não deve permanecer definido como nulo se nenhum valor for atribuído a ele? Por que não pode algo como este trabalho:

public SubClass(string SubString) : base(BaseString)

Além disso, ao chamar o construtor nesta classe derivada, o primeiro parâmetro deve ser nomeado igual ao da classe base ou então gera um erro. Se eu fosse definir uma nova variável de string chamada AnotherString na classe derivada, por que isso não funcionaria:

public SubClass(string AnotherString, string SubString) : base(BaseString)

Por fim, quando você faz isso da maneira certa e digita isso ...

public SubClass(string BaseString, string SubString) : base(BaseString)

... qual é o primeiro parâmetro no construtor SubClass usado para? Não está sendo atribuído ou usado em nenhum método para minha classe derivada. Por que eu tenho que colocar isso lá?

questionAnswers(4)

yourAnswerToTheQuestion