There are many places in the .NET framework where int seems to be used instead of uint where one would never expect a negative number.
For example .Take() in LINQ takes an integer. Port in IPEndpoint or other network classes is a signed integer. And so on.
Is there a reason for this 'loose' typing?