title: What is the best type to hold an ordered pair of values of the same type in C#?
body: <p>What is the best type to hold an ordered pair of values of the same type in C#?</p>
  
  <p>By that I'd want that:</p>
  
  <ol>
  <li>Two values composition is enforced at compile-time (no possibility of trying to add or remove at compile- or run-time).</li>
  <li>Two values have the same static type.</li>
  <li><p>Two values can be retrieved using an indexer (e.g.  pair[0], pair[1]).</p>
  
  <p><strong>UPDATE:</strong> I changed my mind, I don't really want #3 anymore since it pointlessly opens the door to out of bound exceptions: </p></li>
  </ol>