1. Visão geral
É preciso muito consumo para criar um objeto, e esse objeto pode não ser usado durante a execução, então, para evitar criar o objeto toda vez, a inicialização preguiçosa (também chamada de instância preguiçosa) entra em cena.
A inicialização tardia ocorre em . NET 4.0, que é usado principalmente para melhorar o desempenho, evitar desperdiço de cálculo e reduzir os requisitos de memória do programa. Também pode ser chamada de carregamento sob demanda.
2. Gramática básica
3. Implementar com exemplos
Comece criando uma turma para alunos com o seguinte código:
Crie um programa de console com o seguinte código:
Após definir o ponto de interrupção para depuração, descobri que após o novo, o valor do IsValueCreated do Student era falso e o valor do valor era nulo
Então, ao chamar a propriedade Nome, o valor do IsValueCreated do estudante é verdadeiro, e o valor do valor não é mais nulo
Resultado da corrida:
Pode-se ver que o Estudante é inicializado apenas quando o atributo Nome é gerado, ou seja, ele é inicializado quando é usado pela primeira vez, para alcançar o propósito de reduzir o consumo.
Este exemplo é simples e a <T>forma mais básica de usar Lazy. Também podemos usar<T> a função de sobrecarga de Lazy,<T> Lazy (Func<T>), para passar um delegado com um valor de retorno para definir o valor de propriedade do objeto de inicialização preguiçosa.
Resultado da corrida:
Nota:<T> A inicialização de objetos preguiçosos é segura para threads por padrão, e em um ambiente multi-threaded, a primeira thread a acessar<T> a propriedade Valor do objeto Lazy inicializará o objeto Lazy<T> e threads de acesso subsequentes usarão os dados inicializados pela primeira vez.
4. Cenários de aplicação
Existe um objeto que tem muita overhead para criar, e o programa pode não usá-lo. Por exemplo, suponha que seu programa carregue várias instâncias de objetos na inicialização, mas apenas algumas instâncias precisam ser executadas imediatamente. Você pode melhorar o desempenho de inicialização do seu programa adiando a inicialização de objetos desnecessários até que os objetos necessários tenham sido criados.
|