Int32
is widely considered to be the "general-purpose" integer in the .NET framework. If you need a general number that is not fractional, Int32
is what you reach for first. You would only use one of the unsigned types if you had a specific reason to do so.
Using int
for all Count properties creates a consistent API, and allows for the possibility of using -1 as a flag value (which some APIs in the framework do).
From http://blogs.msdn.com/b/brada/archive/2003/09/02/50285.aspx:
The general feeling among many of us is that the vast majority of programming is done with signed types. Whenever you switch to unsigned types you force a mental model switch (and an ugly cast). In the worst cast you build up a whole parallel world of APIs that take unsigned types.