title: Most efficient way to invoke Lazy Loading
body: <p>As the title states, I want to know the most efficient ways to invoke a lazy loaded object property.  Consider the following class definition:</p>
  
  <pre><code>Class MyObject
  {
      private _stringList = null;
      public List&lt;string&gt; StringList
      {
          set
          {
              _stringList = value;
          }
          get
          {
              if(_stringList == null)
              {
                  _stringList = new List&lt;string&gt;();
                  //fill the List with strings from some data source
              }
              return _stringList;
          }
      }
  }
  </code></pre>
  
  <p>Now I want to pre-load StringList with the most in-expensive operation, what whould that be?</p>
  
  <pre><code>MyObject obj = new MyObject();
  obj.StringList.ToString(); //?
  obj.StringList.Count(); //?
  obj.StringList.Equals(null); //?
  </code></pre>
  
  <p>What about:</p>
  
  <pre><code>if(obj.StringList == null){}
  </code></pre>
  
  <p>I don't like this method but it seems like it would be less expensive than calling a method on the property.</p>
  
  <p>I'm looking for an answer specific to List as well as a generic <code>object</code>.</p>
  
  <p>EDIT: I understand that this is considered a micro optimization but that is not the point of the question.  I'm not asking if you like what I'm suggesting doing here.  I want to know the best way to do this relative to CPU and/or memory usage and some proof that the suggested method is actually better than others.</p>