I just found that this:
ushort i = 4;
i = i + 4;
gives a compiler error:
Cannot implicitly convert type 'int' to 'ushort'. An explicit conversion exists (are you missing a cast?)
I have to fix it thus:
ushort i = 4;
i = (ushort)(i + 4);
What is the reason behind this? Shouldn't it be obvious and easy to use all data types?