3514 {
3515 TypeCode typeCode = Cache.TypeCode;
3516 if (typeCode != 0)
3517 {
3518 return typeCode;
3519 }
3520 typeCode = RuntimeTypeHandle.GetCorElementType(this) switch
3521 {
3522 CorElementType.ELEMENT_TYPE_BOOLEAN => TypeCode.Boolean,
3523 CorElementType.ELEMENT_TYPE_CHAR => TypeCode.Char,
3524 CorElementType.ELEMENT_TYPE_I1 => TypeCode.SByte,
3525 CorElementType.ELEMENT_TYPE_U1 => TypeCode.Byte,
3526 CorElementType.ELEMENT_TYPE_I2 => TypeCode.Int16,
3527 CorElementType.ELEMENT_TYPE_U2 => TypeCode.UInt16,
3528 CorElementType.ELEMENT_TYPE_I4 => TypeCode.Int32,
3529 CorElementType.ELEMENT_TYPE_U4 => TypeCode.UInt32,
3530 CorElementType.ELEMENT_TYPE_I8 => TypeCode.Int64,
3531 CorElementType.ELEMENT_TYPE_U8 => TypeCode.UInt64,
3532 CorElementType.ELEMENT_TYPE_R4 => TypeCode.Single,
3533 CorElementType.ELEMENT_TYPE_R8 => TypeCode.Double,
3534 CorElementType.ELEMENT_TYPE_VALUETYPE => ((object)
this !=
typeof(decimal)) ? (((
object)
this !=
typeof(
DateTime)) ? ((!
IsEnum) ? TypeCode.Object :
Type.GetTypeCode(
Enum.InternalGetUnderlyingType(
this))) : TypeCode.
DateTime) : TypeCode.
Decimal,
3536 };
3537 Cache.TypeCode = typeCode;
3538 return typeCode;
3539 }