title: Why do RelayCommands typically use lazy initialization?
body: <p>When using Josh Smith's <a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090051" rel="noreferrer">RelayCommand</a>, most of the examples I've seen use lazy initialization such as:</p>
  
  <pre><code>public class ViewModel
  {
      private ICommand myCommand;
  
      public ICommand MyCommand
      {
          get
          {
              if (myCommand == null)
              {
                  myCommand = new RelayCommand(p =&gt; DoSomething() );
              }
  
              return myCommand;
          }
      }
      // ... stuff ...
  
  }
  </code></pre>
  
  <p>Rather than creating the RelayCommand in the constructor, like this:</p>
  
  <pre><code>public class ViewModel
  {
      public ViewModel()
      {
              MyCommand = new RelayCommand(p =&gt; DoSomething());
      }
  
      public ICommand MyCommand
      {
          get;
          private set;
  
      }
  
      // ... stuff ...
  }
  </code></pre>
  
  <p>What's the benefit of using lazy initialization here? It will have to call the get property when setting up the binding, so I can't seen a reason to use this method over settings things up in the constructor. </p>
  
  <p>Am I missing something here?</p>