title: Which way of returning a readonly wrapper of List<T> is preferable?
body: <p>Say, we have a generic class with a private List.
  We can make it return a readonly wrapper of this list at least with two ways:</p>
  
  <pre><code>public class Test&lt;T&gt;
  {
      public List&lt;T&gt; list = new List&lt;T&gt;();
  
      public IEnumerable&lt;T&gt; Values1
      {
          get
          {
              foreach (T i in list)
                  yield return i;
          }
      }
  
      public IEnumerable&lt;T&gt; Values2
      {
          get
          {
              return list.AsReadOnly();
          }
      }
  }
  </code></pre>
  
  <p>Both <code>Values1</code> and <code>Values2</code> reflect any chages in the underlying collection and prevent it from modifying through themselves.</p>
  
  <p>Which way if preferable? What should one be aware of? Or is there any other better way?</p>