title: C# HashSet with struct and string
body: <p>I created to following code to verify the uniqueness of a series of "tuples":</p>
  
  <pre><code>struct MyTuple
  {
     public MyTuple(string a, string b, string c)
     {
        ValA = a; ValB = b; ValC = c;
     }
     private string ValA;
     private string ValB;
     private string ValC;
  }
  
  ...
  
  HashSet&lt;MyTuple&gt; tupleList = new HashSet&lt;MyTuple&gt;();
  </code></pre>
  
  <p>If I'm correct, I will not end up with two tuples with the same values in my <code>HashSet</code> thanks to the fact that I'm using a struct. I could not have the same behavior with a class without implementing <code>IEquatable</code> or something like that (I didn't dig too much how to do that). </p>
  
  <p>I want to know if there is some gotcha about what I do. Performance wise, I wouldn't expect the use of a struct to be a problem considering that the string inside are reference types.</p>
  
  <p>Edit:
  I want my HashSet to never contains two tuples having string with the same values. In other words, I want the string to behave like values types.</p>