uma coisa que também é de extrema importância principalmente em csharp aqui não só em csharp mas em todas as linguagem de programação Quando você pensa em design de sistemas e performance é os tipos de dados que você manipula dependendo do tipo de dado que você escolhe você pode est comprometendo a performance do seu sistema de uma forma que ele fique mais lento porque você colocou um tipo de dado que talvez não era adequado para aquela situação uma eterna pergunta que sempre fazem né é um campo CPF por exemplo Qual a melhor forma de armazenar esse
campo CPF seria um inteiro seria um string Enfim então quando a gente vai fazer um design efetivo pensando em performance os tipos de dados são muito importantes eu gostaria que vocês soubessem o que a gente tem oferecer o que que C Sharp tem oferecer no seu Framework né E aí um dos tipos aqui é o tipo valor a gente deve usar isso né com certeza no dia a dia os tipos mas muitas vezes não consegue pensar se a gente tá fazendo de forma adequada Então antes de entrar nesse tema gostaria de explicar um pouquinho o
tipo valor o tipo valor no C Sharp ele é um tipo de dados que ele armazena o seu próprio valor ou seja quando a gente vai fazer uma referência lá na memória quando a gente vai criar um objeto na memória e aqui esses tipos valores vão na stack né porque eh são aqueles acessos rápidos lembra que a gente mostrou os exemplos dos metadados ali sendo em empurrados ali na stack tinha as variáveis tantos de escopo de funções ou não mas basicamente esse tipo de dado o tipo valor ele é um tipo de dado que é
salvo lá na stack então quando a variável ela tem ali um valor atribuído a ela ela meramente vai ter ali um conjunto como se fosse uma chave né o nome da variável e o valor que você associa a ela e quando uma variável desse tipo também tem o seu valor atribuído a uma outra variável a e é feito uma cópia desse valor para dentro da outra variável não existe uma referência de uma variável para outra o que existe é pegue o valor que está na variável b e assign né faça o assign faça a atribuição
para a o valor da variável B ali então isso significa que essas alterações ela meramente vai fazer uma cópia em cima da outra e esses tipos são conhecidos também como tipos primitivos né existem outros inteiro flo boleano algumas estruturas como os structs enumerações e assim por diante E como eu falei são armazenadas na stack o que permite uma locação de memória mais eficiente e mais rápido é muito importante a gente planejar também na fase de design das aplicações Qual é a tipagem que nós vamos usar tanto nas nossas aplicações nos bancos de dados por exemplo
o skl server também tem uma preocupação enorme com tipagem se você colocar um varchar ali Max você vai permitir com que coloque eh dados de forma abundante ali naquela coluna e você não se preocupa muito né você deveria se preocupar mas na verdade eu já vi casos de não se preocuparem muito em limitar ali Qual a quantidade de caracteres que vai ser colocado nesses Campos então basicamente é o que a gente faz no dia a dia vai fazer a criação de uma variável passando a tipagem dela e o valor dela o que acontece nos exemplos
Até que a gente viu anteriormente da stack então ela vai lá para stack como uma chave valor tendo a sua tipagem e o seu valor então esse tipo realmente vai para stack de uma forma mais efetiva contendo esse parzinho aí do tipagem e também do valor que foi atribuído para aquela variável Então vale observar que existem diversos tipos como eu falei né S byte byte shar short o short int o int long e cada um desses tipos também tem uma precisão Então você precisa ficar atento ali por exemplo se você vai trabalhar com moedas casas
decimais ali Qual que é a tipagem específica a documentação da própria Microsoft do csharp auxilia nesse processo de tomada de decisão porque isso de novo impacta na performance da aplicação talvez não no começo quando você ainda esteja prototipando o seu sistema criando alguma coisa mais simples mas pensando em performance isso lá na frente é algo que Normalmente quando a gente tem um problema faz um trbl shoot a gente retorna para ver se as estruturas de dados estão adequadas e olha só aqui a gente tem um exemplo imagine aqui do lado esquerdo a gente criou uma
variável a e essa variável a aqui ela vai ter o valor in 1 2 3 basicamente nessa linha aqui o que a gente faz então quando a gente cria uma variável b e faz uma cópia dessa variável né Ou seja a gente atribui B ig a a ou seja pega essa variável b igual a se fizer uma comparação aqui que que vocês acham que vai acontecer vai ser true ou fals certo vamos pegar aqui o visual Studio também só pra gente elaborar isso daqui então tenho aqui int a 1 2 3 4 e eu atribuí
b = a se eu for criar uma outra variável aqui para ver se a é igual a B esse valor vai dar verdadeiro ou vai dar falso vamos ver aqui que que ele vai como que ele vai se comportar e qual que é o valor que ele vai retornar aqui pra gente nessa comparação simples mas que Reforce nos então ele perguntou aqui a é igual a B true verdadeiro isso acontece porque nessa Associação aqui o que tá acontecendo meramente o valor que está associado aqui à variável a que é 1 2 3 4 é repassado
para esse valor da variável b então esse tipo esse tipo aqui é um tipo que realmente faz Associação a valores por isso que o valor dele aí é tipo valor tá mais para frente a gente vai ver o tipo referência que difere um pouquinho desse conceito mas um resumo os tipos valores eles guardam seus valores diretamente os tipos valores podem existir na stack e na hiip eo é pergunta normalmente feita Quando você vai fazer um processo seletivo eles perguntam olha Eh exemplifica para mim tipo valores O que são normalmente o pessoal fala assim Ah os
tipos valores são os tipos ali normalmente Prim que são guardados na stack Tá mas não é verdade eles podem existir na stack e na hiip eu dei aquele exemplo onde a gente e faz instanciação de classes né cria uma classe instancia aquela classe e guarda variáveis dentro dessa classe para alguma manipulação de um saldo alguma coisa ou seja o valor das variáveis e o escopo daquelas variáveis vão estar na stack porém a sua classe vai estar na hip então é uma mistura tá os tipos de valores são assignados pelos valores e não pelas suas referências
e memórias e eles também podem ser comparados pelos seus próprios valores é extremamente importante entendermos esse funcionamento porque realmente daqui paraa frente caso você nunca tenha feito ou visto isso você vai começar a entender e se perguntar no dia a dia Qual é o tipo Qual é a estrutura ali que você tem que adequadamente colocar no seu software para que no futuro ou no seu presente isso represente melhoria significativa em performance as