Why are objects passed by value modified as if they are passed by reference?
<p>For example,</p>

<pre><code>  class Age
  {
    public int Year
    {
      get;
      set;
    }
    public Age(int year)
    {
      Year = year;
    }
  }

  class Person
  {
    public Age MyAge
    {
      get;
      set;
    }
    public Person(Age age)
    {
      age.Year = ( age.Year * 2 );
      MyAge = age;      
    }
  }
</code></pre>

<p>[Client]</p>

<pre><code>Age a = new Age(10);
Person p = new Person( a );
</code></pre>

<p>When a new <code>Age</code> class is constructed the <code>Year</code> property is: 10.  However, the Person class changes the Year to 20, even though there is no ref keyword...</p>

<p>Can someone explain why Year is not still 10?  </p>
