1
resposta

Como é composta a referência ao objeto instanciado?

Talvez seja uma dúvida muito profunda, mas eu gostaria de saber como o compilador sabe que uma referência é feita para um tipo de objeto e não para outro. Em C, se temos uma variável do tipo ponteiro, este aceita qualquer endereço de memória, porém em C# é como se essa referência estivesse tipada, já que não consigo passar uma referência de classe X para uma referência de classe Y. Quando o C# guarda essa referência, ele armazena algo mais do que o endereço de memória? Como uma espécie de Id da classe?

1 resposta

Olá João, Tranquilo ?

Então não sei dizer exatamente como funciona no compilador, mas acredito que tenha relação com a memória Stack(pequena parte da memória onde é guardado value-types e reference-types) e Heap (parte da memória onde é armazenado os objetos que serão referenciados), também a forma de gerenciamento Garbage Collector .

Mas é possível definir e operar ponteiros no C# através da palavra-chave unsafe, da uma olhada nesses dois links da documentação onde explica mais a fundo essa possibilidade.

https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/unsafe-code https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/unsafe-code-pointers/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software