Boo.Lang.Runtime.RuntimeServices.op_ShiftLeft C# (CSharp) Метод

op_ShiftLeft() приватный статический Метод

private static op_ShiftLeft ( object lhs, TypeCode lhsTypeCode, object rhs, TypeCode rhsTypeCode ) : object
lhs object
lhsTypeCode TypeCode
rhs object
rhsTypeCode TypeCode
Результат object
        private static object op_ShiftLeft(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);
            }
        }
RuntimeServices