I\'m surprised by C# compiler behavior in the following example:
int i = 1024; uint x = 2048; x = x+i; // A error CS0266: Cannot implicitly convert type
i int i = 1024; uint x = 2048; // Technique #1 x = x + Convert.ToUInt32(i); // Technique #2 x = x + checked((uint)i); // Technique #3 x = x + unchecked((uint) i); // Technique #4 x = x + (uint)i;