title: Suitable use of Tuple<>, in a unit test?
body: <p>Whilst writing a set of unit tests (for an existing legacy component), I wanted a way to associate a list of error codes (which will be returned by a service that I have mocked), and a list of corresponding error messages (which my component under test will return).</p>
  
  <p>It seems that using a <code>List&lt;Tuple&lt;string, string&gt;&gt;</code> is a nice simple way to define this association.</p>
  
  <pre><code>var errorCodesAndMessages = new List&lt;Tuple&lt;string, string&gt;&gt;
  {
      Tuple.Create("CODE1", "Error message 1"),
      Tuple.Create("CODE2", "Error message 2")
      // etc...
  };
  </code></pre>
  
  <p>In my unit test I can then loop through the <code>errorCodesAndMessages</code>, setting up my mocked service to return the <em>nth</em> error code, and asserting that the component under test returns the <em>nth</em> error message.</p>
  
  <p>Is this a good use of — or an abuse of — <code>Tuple&lt;&gt;</code>?</p>
  
  <h2>Edit</h2>
  
  <p>Responses have suggested that <code>Dictionary&lt;string, string&gt;</code> would be better in this scenario. I have to agree. However, what if (for some reason) we needed to associate three pieces of data (e.g. an error code, user-displayed error message and technical error message)</p>
  
  <p>Would this then be a good use of <code>Tuple&lt;&gt;</code>?</p>
  
  <pre><code>Tuple.Create("CODE1", "User error message", "Technical error message")
  </code></pre>