title: Why should I avoid creating a MutableTuple<T1,T2,TEtc> class in C#?
body: <p>I am a big fan of .NET 4.0's <a href="http://msdn.microsoft.com/en-us/library/dd386941.aspx" rel="nofollow">Tuple classes</a>.  </p>
  
  <p>All the items in the Tuples are immutable.  There are clearly cases where this is beneficial (most obviously when Tuples are used to represent an ad hoc ValueType for which there is no declaration). </p>
  
  <p>However, I have some use cases where I could see the benefit to a Tuple's items having setters (with the exception of the <code>TRest</code> Type parameter in the <code>Tuple&lt;T1, T2, T3, T4, T5, T6, T7, TRest&gt;</code>).  Given that I have access to the source and to <a href="http://msdn.microsoft.com/en-us/magazine/dd942829.aspx" rel="nofollow">Matt Ellis's article on "Building Tuple"</a>, it seems like it would be pretty simple to implement such a <code>MutableTuple&lt;T1,T2,TEtc&gt;</code>.  </p>
  
  <p>There was clearly a decision by Microsoft to make the <code>Tuple</code> immutable.  <strong>Is there a reason that I am overlooking that I shouldn't create an alternate implementation with mutable non-tuple items?</strong>  </p>