Wendel,
Acho que entendi... deixa eu explicar:
O "System.NullReferenceException" é uma referencia de exceção de NULL que pode querer dizer: "NÃO instanciado".
O segredo é o seguinte: Existem duas etapas quando se trabalha com variáveis:
- Dimensionar: Quando você dimensiona, aloca espaço em memória para a variável;
- Instanciar: Quando você instancia, diz o que é a variável;
Para corrigir o problema, você precisa INSTANCIAR dois pontos em seu código a saber:
public DadosCliente titular = new DadosCliente();
e
public DadosEndereco endereco = new DadosEndereco();
Se você estiver usando a versão do ".NET 5" (ou superior) pode usar uma forma nova e mais resumida a saber:
public DadosCliente titular = new();
e
public DadosEndereco endereco = new();
Pois a instância será considerada a mesma da declaração da dimensão.
OUTRA COISA! Você também pode instanciar DEPOIS, DESTA FORMA (mas o "NEW" precisa estar dentro da função):
public void Cadastrar(string nome)
{
titular = new();
titular.nome = nome;
}
Imagine uma INTERFACE... seria legal instanciá-la posteriormente com uma classe mais específica.
Por favor leia a apostila da CAELUM em PDF:
==========================================================
C# E ORIENTAÇÃO A OBJETOS (Curso FN-13)
https://www.caelum.com.br/apostila/apostila-csharp-orientacao-objetos.pdf
==========================================================
Veja também:
==========================================================
C# - Conceitos básicos - Classes Estáticas
...
Na linguagem C# para criar uma instância de uma classe usamos a palavra-chave new.
...
https://www.macoratti.net/12/01/c_stc1.htm#:~:text=Criar%20um%20objeto%20de%20uma,macoratti%20do%20tipo%20Cliente().
==========================================================
Espero ter te ajudado.
[]'s,
Fabio I.