1. Visión general
Crear un objeto requiere mucho consumo, y este objeto puede no usarse durante la ejecución, así que para evitar crear el objeto cada vez, entra en juego la inicialización perezosa (también llamada instanciación perezosa).
La inicialización retardada ocurre en . NET 4.0, que se utiliza principalmente para mejorar el rendimiento, evitar cálculos desperdiciados y reducir los requisitos de memoria del programa. También puede llamarse carga bajo demanda.
2. Gramática básica
3. Implementa con ejemplos
Empieza creando una clase para estudiantes con el siguiente código:
Crea un programa de consola con el siguiente código:
Después de establecer el punto de interrupción para depurar, descubrí que tras la nueva información, el valor de IsValueCreated de Student era falso y el valor de valor era nulo
Entonces, al llamar a la propiedad Nombre, el valor de IsValueCreated de student es verdadero, y el valor de valor deja de ser nulo
Resultado de la carrera:
Se puede ver que el Estudiante solo se inicializa cuando se genera el atributo Nombre, es decir, se inicializa cuando se usa por primera vez, para lograr el propósito de reducir el consumo.
Este ejemplo es sencillo y la <T>forma más básica de usar Lazy. También podemos usar<T> la función de sobrecarga de Lazy,<T> Lazy (Func<T>), para pasar un delegado con un valor de retorno y establecer el valor de propiedad del objeto de inicialización de Lazy.
Resultado de la carrera:
Nota:<T> La inicialización de objetos perezosos es segura para hilos por defecto, y en un entorno multihilo, el primer hilo que accede<T> a la propiedad Valor del objeto perezoso inicializará el objeto perezoso<T>, y los hilos de acceso posteriores usarán los datos inicializados por primera vez.
4. Escenarios de aplicación
Hay un objeto que tiene mucha sobrecarga que crear, y el programa puede que no lo use. Por ejemplo, supongamos que tu programa carga varias instancias de objetos al iniciar, pero solo unas pocas instancias necesitan ejecutarse inmediatamente. Puedes mejorar el rendimiento de arranque de tu programa retrasando la inicialización de objetos innecesarios hasta que se hayan creado los objetos necesarios.
|