title: Why do functions take an int as an argument when its value logically can not be < 0
body: <p>When I am writing functions that takes an arguments that determine a certain length, I always use <code>uint</code>. As it makes no sense for the value to be a negative number.</p>
  
  <p>But I see the opposite (very often) in the .Net framework.
  For example: <a href="http://msdn.microsoft.com/en-us/library/xsa4321w.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/xsa4321w.aspx</a></p>
  
  <blockquote>
    <p>Initializes a new instance of the String class to the value indicated by a specified Unicode character repeated a specified number of times.</p>
  </blockquote>
  
  <pre><code>public String(
      char c,
      int count
  )
  </code></pre>
  
  <p>It also states that an <code>ArgumentOutOfRangeException</code> is thrown when `<em>count</em> is less than zero."</p>
  
  <p>Why not make the <code>count</code> argument an <code>uint</code> then!?</p>