private static object op_ShiftRight(object lhs, TypeCode lhsTypeCode,
object rhs, TypeCode rhsTypeCode)
{
IConvertible lhsConvertible = (IConvertible)lhs;
IConvertible rhsConvertible = (IConvertible)rhs;
switch(rhsTypeCode)
{
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
throw new ArgumentException(lhsTypeCode + " >> " + rhsTypeCode);
default:
break;
}
switch (lhsTypeCode)
{
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
throw new ArgumentException(lhsTypeCode + " >> " + rhsTypeCode);
case TypeCode.UInt64:
return lhsConvertible.ToUInt64(null) >> rhsConvertible.ToInt32(null);
case TypeCode.Int64:
return lhsConvertible.ToInt64(null) >> rhsConvertible.ToInt32(null);
case TypeCode.UInt32:
return lhsConvertible.ToUInt32(null) >> rhsConvertible.ToInt32(null);
default:
return lhsConvertible.ToInt32(null) >> rhsConvertible.ToInt32(null);
}
}