Począwszy od .NET 4, Lazy<T>
może być używany do leniwie inicjowania obiektów. Intuicyjnie inicjowanie leniwy można również wykonać w obiekcie publicznym o nazwie pobierającej, aby zapewnić tę samą funkcję dla dzwoniącego. Zastanawiam się, czy Lazy<T>
oferuje jakąkolwiek wrodzoną przewagę nad tym ostatnim, a zatem powinno być preferowane?Czy Lazy <T> należy preferować do leniwej inicjalizacji w geterze?
Osobiście uważam, że Lazy<>
może szybko zmniejszyć czytelność kodu, ale być może właśnie widziałem to niewłaściwie. Z drugiej strony zapewnia bezpieczeństwo wątku, ale istnieje wiele konstrukcji synchronizacji .NET, które - być może jestem w błędzie - sprawiają, że łatwo jest osiągnąć to samo w geterze.
Co należy wziąć pod uwagę przy wyborze najlepszego rozwiązania?
Podaj przykład leniwej inicjalizacji uzyskanej bez 'Lazy'. To nie jest takie proste, jak się wydaje. –
możliwy duplikat [Właściwość podręczna kontra Lazy] (http://stackoverflow.com/questions/5134786/cached-property-vs-lazyt) –
Default
Domyślnie: nieodebrane, dzięki. To może być oznaczone jako duplikat. @Ben Voigt: podobny do tego, co opisuje Patrick Hofman w swojej odpowiedzi. Poza tym, uprzejmie proszę ludzi, którzy nie zgadzają się z tym, aby przedstawić komentarze na temat tego, jak można poprawić to pytanie (muszę powiedzieć, że jestem trochę zawiedziony tym, jak agresywna jest ta strona). – w128