Felipe,
Todas as variáveis apontam para um endereço e dentro deste endereço a variável pode guardar dados de tipos primitivos ou complexos.
Pergunta:
- Não sei se fui muito claro, mas posso entender que ao indicar que uma referencia recebe outra eu posso alterar o atributo de qualquer uma que o CSharp vai considerar a ultima alteração?
Resposta:
- SIM, pois você está apontando para um endereço de memória e não para um OUTRO valor que, por exemplo, foi copiado.
Pergunta:
- Outra coisa é, o apontamento não é apenas de uma para outra e sim as duas apontam para cada uma delas como no exemplo abaixo?
Resposta:
- SIM, o ponteiro aponta (REFerencia) um endereço de memória, não é como o exemplo abaixo...
Por favor, leia os links abaixo, eles irão explicar melhor o que eu não consegui explicar:
==========================================================
Value Type and Reference Type
Tipo de valor e tipo de referência
Em C#, esses tipos de dados são categorizados com base em como armazenam seu valor na memória. C# inclui as seguintes categorias de tipos de dados:
- Tipo de valor
- Tipo de referência
- Tipo de ponteiro
Tipo de referência
Ao contrário dos tipos de valor, um tipo de referência não armazena seu valor diretamente. Em vez disso, ele armazena o endereço onde o valor está sendo armazenado. Em outras palavras, um tipo de referência contém um ponteiro para outro local de memória que contém os dados.
Alocação de Memória da Variável do Tipo de Valor
Alocação de Memória da Variável do Tipo de Referência
Tipo de referência nula
https://www.tutorialsteacher.com/csharp/csharp-value-type-and-reference-type
==========================================================
Pointer and Reference in C#
Ponteiro e referência em C#
Dániel Szabó
9 de janeiro de 2020
6 minutos de leitura
Para começar, vamos esclarecer alguns termos básicos. Em C# temos dois tipos de códigos, safe e unsafe . Chamamos um código seguro quando esse código é executado inteiramente sob a supervisão do CLR (Common Language Runtime). Códigos inseguros são códigos que usam recursos externos, como arquivos, arquivos de música ou vídeo ou fluxos de rede. Com código seguro o GC (Garbage Collector) libera recursos que não são mais necessários. Com código inseguro, precisamos chamar GC.Collect()ou implementar mecanismos para liberar os recursos não utilizados.
https://www.pluralsight.com/guides/charp-pointer-and-reference
==========================================================
VARIÁVEIS E TIPOS PRIMITIVOS
https://www.caelum.com.br/apostila-csharp-orientacao-objetos/variaveis-e-tipos-primitivos
==========================================================
C# - Não existem tipos primitivos definidos na linguagem C# (Você sabia ?)
https://www.macoratti.net/17/01/cshp_primit1.htm
==========================================================
Programando com C# - Variáveis
https://www.juliobattisti.com.br/tutoriais/herbertgois/programandocsharp005.asp
==========================================================
Tipos de Variáveis no C#
Veja nesta Quick tipos de variáveis no C#
https://www.devmedia.com.br/tipos-de-variaveis-no-csharp/16770
==========================================================
[]'s,
Fabio I.