Chris Eargle

Life Student of the Kodefu Arts

Lazy Loading Properties

by chris 1. October 2008 12:28

What do you do when you are loading hundreds of objects and it's taking too long? When you instantiate the object in a vacuum, it runs very fast. However, you run a few tests and determine a collection on the object causes a bottleneck if a call to load the collection occurs many times in succession.

    public class Customer
    {
        
private List<Account> accounts = SlowLoadMethod();

        
public IList<Account> Accounts
        {
            
get{ return accounts; }
        }

        ...
    }

If the property doesn't need to be accessed immediately upon instantiation, we can use a technique called lazy loading. This means the data isn't loaded into the member variable and the call to the slow method will not occur until the first time the property is accessed. This is easy to accomplish via a conditional check inside the property's get accessor.

    public class Customer
    {
        
private List<Account> accounts;

        
public IList<Account> Accounts
        {
            
get
            {
                
if (accounts == null)
                {
                    accounts = SlowLoadMethod();
                }

                
return accounts;
            }
        }

        ...
    }

In this example, the accounts private member is null until the first time that someone accesses the Accounts property. At that point, the accounts private member is assigned a value from the SlowLoadMethod. Subsequent accesses to the Accounts property skip this step and returns the field as usual.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

c#, properties

Kodefu

E-mail | Kick it! | DZone it! | del.icio.us
Permalink | Comments (0) | Post RSSRSS comment feed

Related posts

Parsing Properties and ItemsMSBuild files are loaded and parsed in order. This means that properties and items are in scope if t...Environment Variables and MSBuildEverything worked fine the last time I gave my MSBuild presentation. There were no changes to my fil...LINQPad BetaJospeh Albahari has released LINQPad, the easy way to LINQ!
Saving the comment

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

January 6. 2009 02:41

Powered by BlogEngine.NET 1.3.1.0
Theme by Mads Kristensen

About the author

Chris Eargle Chris Eargle
Enterprise .NET developer in Columbia, SC.

E-mail me Send mail

Pages

  • Presentations

Twitter Updates

    Recent comments

    • Kicking Off 2009 In Style (2)
      Busby SEO Test wrote: Thanks for the post [More]
    • Kicking Off 2009 In Style (2)
      Justin James wrote: Congrats to both, particularly the C# MVP! I took … [More]
    • MDC Atlanta (6)
      SEO Dubai wrote: I forgot to congratulate you..:) [More]
    • MDC Atlanta (6)
      SEO Dubai wrote: wish you are happy in your new place.. [More]
    • WCF 3.5 Security Guidelines (9)
      Busby SEO Test wrote: nice work man [More]
    • Project Astoria September 2007 CTP Released (1)
      Busby SEO Test Pinay wrote: good luck to the project, i hope it gonna finish q… [More]
    • Load Balancing Header Issue (5)
      Busby SEO Test wrote: Me too [More]
    • WCF 3.5 Security Guidelines (9)
      Busby SEO Test wrote: nice work man [More]
    • WCF 3.5 Security Guidelines (9)
      Busby seo test wrote: Security indeed is very important in web developme… [More]
    • The Path Is Not a Legal Form (5)
      Busby SEO Test wrote: thanks for the information [More]

    Archive

    • 2009
      • January (1)
    • 2008
      • December (5)
      • November (4)
      • October (7)
      • September (8)
      • August (5)
      • July (1)
      • June (1)
      • April (4)
      • March (1)
      • February (4)
      • January (5)
    • 2007
      • December (5)
      • November (1)
      • October (6)
      • September (3)
      • August (1)
      • June (1)

    Tags

    • activex
    • addin
    • ado.net data services
    • ajax
    • architecture
    • asp.net
    • astoria
    • azure
    • beta
    • bug
    • c#
    • champs
    • code camp
    • com
    • community
    • communitycredit
    • consolas
    • continuous integration
    • conversion
    • ctp
    • database
    • deployment
    • design
    • design principles
    • download
    • ebook
    • entity
    • entlib
    • environment variables
    • expression blend
    • fail
    • font
    • framework
    • gadget
    • generics
    • grid
    • guidelines
    • icon
    • ineta
    • interfaces
    • jacksonville
    • lamdba
    • linq
    • linqtosql
    • list
    • live mesh
    • macro
    • mdc
    • mobile
    • msbuild
    • msdn
    • msi
    • mvc
    • mvp
    • powertoy
    • preview
    • properties
    • ray ozzie
    • refactoring
    • regasm
    • russ fustino
    • security
    • serialization
    • silverlight
    • snippet
    • source code
    • sql server
    • sql2008
    • sqlmetal
    • srss
    • starter kit
    • stream
    • string
    • tfs2008
    • trial
    • usability
    • ux
    • vb.net
    • vbscript
    • vista
    • visual studio
    • vs2008
    • wcf
    • web
    • winforms
    • wpf
    • xml

    Categories

    • RSS feed for Bleeding EdgeBleeding Edge (5)
    • RSS feed for Build NinjaBuild Ninja (2)
    • RSS feed for CEDGCEDG (2)
    • RSS feed for GeneralGeneral (1)
    • RSS feed for KodefuKodefu (21)
    • RSS feed for Path NotesPath Notes (10)
    • RSS feed for PresentationPresentation (5)
    • RSS feed for TechniquesTechniques (2)
    • RSS feed for TrainingTraining (5)
    • RSS feed for WeaponsWeapons (4)
    • RSS feed for ZenZen (5)

    Archive

    Blogroll

    • RSS feed for Structure Too BigStructure Too Big
      • Should you buy an exten...
      • WorldMaps Update
      • MSDN Roadshow -- coming...
    • RSS feed for Chris CraftChris Craft
      • Pimp My Phone – D...
      • Pimp My Phone – D...
      • Pimp My Phone – D...
    Download OPML file OPML

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2009

    Sign in