title: Should I implement IEquatable, or IComparable?
body: <p>I have a class. The <em>thing</em> that this class is meant to represent is such that we may speak about such <em>things</em> being equal to each other, and we may also come up with a scheme to rank them for purposes of comparison.</p>
  
  <p>However, it so happens that it is rare that one feels the need to rank these <em>things</em>, but one often needs to check if two such <em>things</em> are equal.</p>
  
  <p>So, I can implement both <code>IEquatable</code> for my class as well as <code>IComparable</code>. While <code>IComparable</code> provides some extra functionality, it is very unlikely that anyone will care about this extra functionality. Neither one seemingly provides a clear advantage, either logically or functionality-wise.</p>
  
  <p>Which interface should I implement, <code>IEquatable</code>, <code>IComparable</code>, or both? Why? (I am specifically wondering about framework-wide implications either interface)</p>
  
  <p><a href="https://stackoverflow.com/questions/2410101/whats-the-difference-between-icomparable-iequatable-interfaces?rq=1">This question</a> is similar, but the answers only state the obvious, which doesn't help me.</p>
  
  <p>In case you are wondering, the class is meant to represent a nucleotide. Nucleotides can readily be equated, but they can also be compared (eg. alphabetically).</p>