1. Aperçu
Il faut beaucoup de consommation pour créer un objet, et cet objet peut ne pas être utilisé pendant la course, donc pour éviter de créer l’objet à chaque fois, une initialisation paresseuse (appelée instanciation paresseuse) entre en jeu.
L’initialisation différée se produit dans . NET 4.0, qui est principalement utilisé pour améliorer les performances, éviter le gaspillage de calcul et réduire les besoins en mémoire du programme. On peut aussi appeler cela le chargement à la demande.
2. Grammaire de base
3. Implémenter avec des exemples
Commencez par créer une classe Étudiant avec le code suivant :
Créez un programme console avec le code suivant :
Après avoir défini le point d’arrêt pour le débogage, j’ai constaté qu’après nouvelle, la valeur de IsValueCreated de Student était fausse et la valeur de valeur nul
Alors, lors de l’appel de la propriété Nom, la valeur de l’IsValueCreated de l’étudiant est vraie, et la valeur de la valeur n’est plus nulle
Résultat de la série :
On peut voir que l’Étudiant n’est initialisé que lorsque l’attribut Nom est sorti, c’est-à-dire qu’il est initialisé lors de sa première utilisation, afin d’atteindre l’objectif de réduire la consommation.
Cet exemple est simple et la <T>façon la plus basique d’utiliser la paresse. Nous pouvons également utiliser<T> la fonction de surcharge de Lazy, Lazy<T> (Func<T>), pour faire passer un délégué avec une valeur de retour afin de définir la valeur de propriété de l’objet d’initialisation paresseuse.
Résultat de la série :
Note :<T> L’initialisation d’un objet paresseux est par défaut thread-safe, et dans un environnement multithread, le premier thread à accéder<T> à la propriété Value de l’objet Lazy initialisera l’objet Lazy<T> objet, et les threads d’accès suivants utiliseront les données initialisées pour la première fois.
4. Scénarios d’application
Il y a un objet qui a beaucoup de surcharge à créer, et le programme peut ne pas l’utiliser. Par exemple, supposons que votre programme charge plusieurs instances d’objets au démarrage, mais que seules quelques instances doivent être exécutées immédiatement. Vous pouvez améliorer les performances de démarrage de votre programme en retardant l’initialisation des objets inutiles jusqu’à ce que ceux-ci soient créés.
|