Usei um notebook Polyglot do Visual Studio Code e escrevi o seguinte em 3 células separadas, na ordem indicada abaixo.
Célula 1:
class Z;
Célula 2:
class A
{
public static void f()
{
Console.WriteLine(Z.x);
}
}
Célula 3:
class Z: A
{
public static int x = 42;
}
Em seguida, executei as células em ordem e recebi a seguinte mensagem de erro.
'Z' does not contain a definition for 'x'
Minha pergunta original foi:
É possível, em C#, escrever uma classe (possivelmente abstrata)
A
que tenha uma função (possivelmente estática) com assinaturavoid f(B b)
, cujo tipo de parâmetroB
é uma classe (possivelmente abstrata) derivada deA
(class B: A {...}
)? Se não, por que não?
e foi intitulado Uma classe C# pode usar uma classe derivada?
Aceitei a resposta abaixo com base nesta formulação. Esta formulação foi posteriormente excluída por outro usuário que editou minha pergunta e alterou seu título.