Data types in C# have stupid names.
byte - It's unsigned. Ok, that's reasonable so far.
sbyte - Signed byte. I guess that's alright.
int - Ok, an integer. It's signed. What?
uint - This is an unsigned int?
Why isn't it sint or ubyte? Don't mix them. If I can use s<type> for signed, then use s<type> for all of them. Don't use s for some and u for others!