User-defined types são as famosas Structs, como structs são value-types, tem a vantagem de serem armazenadas no stack da memoria, e trabalham como uma classe, inclusive para fazer uma struct se transformar em uma classe, basta trocar a Keyword struct por class.
Uma struct deve ser criada ao inves de uma classe, quando:
- Lógicamente possa ser representada por um valor simples
- Sua instancia seja menor do que 16 bytes
- Que ela não vá receber alterações
- Que não vai ser convertida em um reference-type
Exemplos
Pontos Cartesianos XY, precisam apenas de 2 variaveis para armazenar seus valores, pois é um conceito fixo, que não vai sofrer alterações por causa de regras de negócio.
Entendimento
Quando a necessidade de se criar objetos simples, e imutáveis, que vão precisar de menos de 16bytes para serem representados, ou seja suas propriedades somadas, não somem 16bytes, as structs são mais indicadas, pois ficam armazenadas no stack e assim possuem acesso mais rápido aumentando o seu desempenho.
No caso dos pontos cartesianos, a não ser que seja escolhido o tipo Decimal para representar os pontos, como só é necessário os pontos X e Y (2 variaveis)
se for escolhido Int ou float , a classe ocuparia 8 bytes (4 para cada variavel), se for escolhido long ou double, a classe ocuparia 16 bytes (8 para cada variavel) porém caso a precisão seja em Decimal ai ocuparia 32 bytes, pois cada decimal consome 16bytes
Nenhum comentário:
Postar um comentário