Vamos falar agora continuando a aula do tipo referência a diferença do tipo referência para o tipo valor é bem claro o tipo valor é o que a gente falou ali ele basicamente vai fazer a comparação e vai colocar o valor das variáveis baseado nos valores deles mesmos ou seja uma variável int a = 1 ele vai tratar o valor que tá contido no valor da variável o tipo referência ele já é um pouco diferente ele é um tipo que ele lida com a comparação e com a correlação entre aonde está e colocado o valor de
referência daquela variável se ficou confuso vamos imaginar da seguinte forma a gente tem aqui na stec a classe Line que a gente distanciou né e os e os parâmetros ali dentro né int x int Y duas variáveis essas duas variáveis int x int Y que tá aqui do lado esquerdo elas vão trabalhar basicamente fazendo a comparação e tendo seu valor por tipo de valor ou seja o valor x = 1 Y = 2 se eu fizer uma comparação de X com Y ele vai comparar os valores contidos nessas variáveis O que é diferente de uma
locação feita na hip a locação feita na hip por ser um espaço de memória maior ele vai fazer uma alocação pela referência de um ponteiro aqui de um de uma memória aonde está alocado Line na memória então imagina o espaço da memória ali que tem o endereço x y z 1 2 3 4 algum número randômico ali que o próprio Framework faz ele aloca Line ali só que o valor contido dentro dessa locação Ele não tá aqui ele tá lá na stack então a forma de trabalhar com essa tipagem ela é diferente e de certa
forma ela também auxilia ou ou ou ela pode prejudicar no momento de performance porque imagina o seguinte cenário você faz muita locação de Strings ou algum outro tipo que faz muita alocação na hiip Lembrando que a gente falou em alguma outra aula aqui que basicamente eh existe o processo do garbage collector que vai limpar essa memória ou seja dependendo do tipo de alocação que você faz a referência que você faz você vai ter aqui do lado esquerdo a stack praticamente vazia porque esses valores já foram excluídos ou tirados desse espaço de memória mas vai manter
valor lá na hiip Então dependendo do projeto que você trabalha dependendo da Necessidade você precisa entender se você precisa de uma classe se você precisa de um struct por exemplo tá uma struct ela é alocada normalmente ali na memória stck também porque ela tem um uma composição um um valor de alocação muito menor do que uma classe e comportamentos também claro né Então imagina o outro seguinte cenário também a gente tem aqui na stack uma variável a e a gente tem aqui uma outra variável B onde a gente vai eh pegar o valor de b
e colocar igual a a que que que acontece aqui então são duas variáveis distintas aqui nesse processo Eu estou fazendo um assign do valor né de de B iG A então ele vai pegar o valor que está em a e vai jogar dentro de B aqui eu tenho a comparação por valor porém ambos os o o os dois parâmetros aqui né as duas variáveis na verdade elas vão apontar pro mesmo objeto Line Ou seja eu tenho um objeto line com duas que estão fazendo também uma inferência aqui de valores entre elas só que as duas
apontando para mesmo lugar tá então se dentro desse objeto então aqui é um objeto instanciado só que com valores internos aqui que são por valores por tipagem né é a tipagem do valor ali correspondente E aí eu coloco essa mesma informação aqui só que buscando lá da Rip ou seja aqui existe uma associação por tá então eu fiz aqui um New Class Line igual né tô fazendo aqui uma Instância desse meu próprio objeto E lembrando que ele pode ser reutilizado aqui na memória hiip Então dessa forma é como eu consigo trabalhar com a memória hiip
com a memória steack nesse caso aqui a gente tá falando de valores né das tipagens essa é uma tipagem por referência esse valor aqui tá sendo referenciado lá naquele mesmo ponteiro naquele mesmo espaço de memória que foi alocado um resumo aqui então então é o tipo referência vai armazenar seu valor na memória hiip ou seja não o valor da variável em si Mas aonde foi alocado na memória hip o tipo referência pode existir na memória stack e também na memória hip isso é inclusive pergunta de processo seletivo podem te perguntar Quais as referências que existem
e aonde são guardadas né esses tipos de referência o tipo valor etc então eles podem residir na stc e também na hiip o tipo referência ele tem um assign por referência mesmo então quando eu faço duas classes Classe A igual nucle a e classe B igual New Class b e eu faço um Class A igual Class B na verdade eu não estou referenciando os valores contidos dentro daquela classe eu estou referenciando Qual é o pontamento qual é a referência daquela classe e tô trazendo isso pro meu contexto e no final de tudo como eu falei
elas são comparadas por referência diferente do tipo valor que eu comparo o valor con tio da variável