Why is this an issue?
Numbers can be shifted with the
>> operators, but the right operand of the operation needs to be an
int or a type that has an implicit conversion to
int. However, with
dynamic, the compiler’s type checking is
turned off, so you can pass anything to a shift operator and have it compile. And if the argument can’t be converted to
int at runtime,
RuntimeBinderException will be raised.
Noncompliant code example
dynamic d = 5;
var x = d >> 5.4; // Noncompliant
x = d >> null; // Noncompliant
x <<= new object(); // Noncompliant