9 votes

Quand faire une charge paresseuse ?

Je charge paresseusement tous mes membres. Je fais cela depuis un certain temps et j'ai simplement considéré que le chargement paresseux était une bonne chose au premier abord.

Disons que nous avons

public class SomeClass
{
   public int anInt;
   public SomeReferenceType member1;

   public SomeClass()
   {
      //initialize members in constructor when needed (lazy load)
      anInt = new int();
      member1 = new SomeReferenceType();
   }
}

Y a-t-il des inconvénients à faire les choses de cette manière ? Est-ce un bon modèle de chargement paresseux ? Cela a-t-il un sens de charger paresseusement un type de valeur (avec la RAM moderne, est-ce même important) ?


Après ce que j'ai appris de vos réponses, j'aimerais savoir s'il y a une différence entre ce qui précède et ceci...

public class SomeClass
    {
       public int anInt;
       public SomeReferenceType member1 = new SomeReferenceType();

       public SomeClass()
       {

       }
    }

0voto

Nikki Points 357

Le chargement paresseux est essentiel lorsque le coût de création d'un objet est très élevé et que l'utilisation de l'objet est très rare. C'est donc le scénario où il est intéressant d'implémenter le chargement paresseux. L'idée fondamentale du chargement paresseux est de charger l'objet ou les données lorsque cela est nécessaire.

0voto

Ali Points 1

Le chargement paresseux est un concept dans lequel nous retardons le chargement de l'objet jusqu'au moment où nous en avons besoin. En d'autres termes, il s'agit de charger les objets à la demande plutôt que de les charger inutilement.

Par exemple, dans l'exemple ci-dessous, nous avons une simple classe Client et cette classe Client contient de nombreux objets Commande. Observez attentivement le constructeur de la classe Client. Lorsque l'objet Client est créé, il charge également l'objet Commande à ce moment-là. Ainsi, même si nous avons besoin ou non de l'objet Order, il est toujours chargé.

Lien vers l'exemple

0voto

RAGESH PUNATHIL Points 11
List<int> number = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        var result = number.Where(x => x % 2 == 0);
        number.Add(20);
        //foreach (int item in result)
        //{
        //    Console.WriteLine("loop1:" + item);
        //}

        foreach (int item in result)
        {
            if (item == 4)
                break;
            Console.WriteLine("loop2:" + item);
        }
        number.Add(40);
        foreach (int item in result)
        {

            Console.WriteLine("loop3:"+item);
        }
        Console.ReadLine();

décomposer la première boucle et voir la différence. exemple très utile pour comprendre l'exécution différée et le chargement paresseux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X