Conheça a classe Lazy do C# e ganhe mais performance e memória
Como utilizar a classe Lazy no C#
Quem nunca teve problemas com performance em seu código que atire a primeira pedra!
Resolvi escrever esse post com o intuito de ajudar melhorar e muito a performance de seu código.
Irei indicar o uso de uma classe chamada Lazy que é pouco explorada pelos desenvolvedores e que pode trazer uma certa diferença em seu produto final.
Bom chega de blá blá blá e vamos ao que interessa!
Classe Lazy
A classe Lazy tem por objetivo retardar uma nova instância de um objeto, ou seja, se você estiver acessando a propriedade de um objeto que usa o Lazy, o objeto só será criado quando você acessar o método Value.
Imagine um objeto que tem várias propriedades, e algumas dessas propriedades são objetos complexos que tem várias outras propriedades complexas, mas no momento que você ta acessando o objeto principal você quer pegar apenas uma informação simples do próprio objeto principal e não quer carregar a instancia das propriedades que possuem o objeto complexo, ai entra o Lazy em ação.
Podemos ter acesso a classe Lazy no seguinte namespace System.Lazy
Vamos ver um exemplo prático:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //Criei uma instancia da categoria Categoria c = new Categoria(); //Setei um valor para a propriedade NomeCategoria, mas não setei nada para o usuário c.NomeCategoria = "Transporte"; //Imprimo o valor da propriedade NomeCategoria Console.WriteLine("Obtem nome da instancia da Categoria = " + c.NomeCategoria); //Verifico se a propriedade UsuarioCadastro foi instanciada através do método IsValueCreated Console.WriteLine("UsuarioCadastroInstanciado = " + c.UsuarioCadastro.IsValueCreated); //Invoco a propriedade do usuário através do Value Console.WriteLine("Resgato o valor da propriedade do usuario"); Console.WriteLine("Obtem nome da instancia do UsuarioCadastro = " + c.UsuarioCadastro.Value.Nome); //Verifico se a propriedade UsuarioCadastro foi instanciada através do método IsValueCreated Console.WriteLine("UsuarioCadastroInstanciado = " + c.UsuarioCadastro.IsValueCreated); //Fecho o prompt após pressionar uma tecla Console.ReadKey(); } public class Categoria { public Lazy<Usuario> UsuarioCadastro { get; set; } public string NomeCategoria { get; set; } public Categoria() { this.UsuarioCadastro = new Lazy<Usuario>(); } } public class Usuario { public Usuario() { this.Nome = "Paulo Rogério"; } public string Nome { get; set; } } } } |
Veja o resultado:
Como podemos observar o objeto Usuario só será instanciado caso invocamos a propriedade UsuarioCadastro da categoria através do Value, com isso você consumirá menos memória e ganhará performance.
Acesse o exemplo no meu GitHub clicando aqui
Se você conhece alguma classe interessante, compartilhe conosco através do comentário.
Participe do nosso Slack clicando no link abaixo e tire suas dúvidas:
https://ilovecodeteam.herokuapp.com/
Não esqueça de curtir nossa fanpage, nosso canal no youtube e participar do nosso grupo do Facebook.
About author
You might also like
Conheça os operadores implicit e explicit do C#
Share this on WhatsAppE ai pessoal beleza? Sei que ando sumido ultimamente, mas é devido eu estar gravando vídeo aulas para colocar no site Udemy. Resolvi colocar algum conteúdo pago na Udemy
Curso Ionic em português – Aula 8 – Adicionando tela de aguarde!
Share this on WhatsAppExiba tela de aguarde quando estiver processando algo Pessoal, continuando com nossa série de vídeo aulas, hoje trago dicas de como podemos abrir uma tela de aguarde
Curso Ionic 5 é lançado, garanta cupons grátis!
Share this on WhatsAppFala Dev! Passando aqui rapidinho para informar que o curso de Ionic 5 do Zero até Publicação acaba de ser lançado! Este curso é para pessoas iniciantes
0 Comments
No Comments Yet!
You can be first to comment this post!