When would a value type contain a reference type?
<p>I understand that the decision to use a value type over a reference type should be based on the semantics not performance.   I do not understand, why can value types legally contain reference type members?  This is for a couple reasons:  </p>

<p>For one, we should not build a struct to require a constructor.</p>

<pre><code>public MyStruct
{
   public Person p;
   //public Person p = new Person();//Error:  cannot have instance field initializers in structs

   MyStruct(Person p)
   {
      p = new Person();
   }
}
</code></pre>

<p>Second, because of value type semantics:</p>

<pre><code>MyStruct someVariable;
someVariable.p.Age = 2;//nullreferenceexception
</code></pre>

<p>The compiler does not allow me to initialize <code>Person</code> at the declaration.  I have to move this off to the constructor, rely on the caller, or expect a <code>nullreferenceexception</code>.  None of these situations are ideal. </p>

<p>Does the .NET framework have any examples of reference types within value types?  When should we do this (if ever)?</p>
