This is a question that came up on our internal alias. I thought it might be generally interesting to illustrate how the compiler picks operators. Here is the original issue. This code compiles fine: UInt64 vUInt641 = UInt64.MaxValue; const int vInt2