Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryParse< TEnum >() [3/6]

static bool System.Enum.TryParse< TEnum > ( ReadOnlySpan< char > value,
bool ignoreCase,
bool throwOnFailure,
out TEnum result )
inlinestaticprivate
Type Constraints
TEnum :struct 

Definition at line 556 of file Enum.cs.

556 : struct
557 {
558 if (!typeof(TEnum).IsEnum)
559 {
560 throw new ArgumentException(SR.Arg_MustBeEnum, "TEnum");
561 }
562 value = value.TrimStart();
563 if (value.Length == 0)
564 {
565 if (throwOnFailure)
566 {
567 throw new ArgumentException(SR.Arg_MustContainEnumInfo, "value");
568 }
569 result = default(TEnum);
570 return false;
571 }
572 RuntimeType enumType = (RuntimeType)typeof(TEnum);
573 int result3;
574 uint result6;
575 switch (Type.GetTypeCode(typeof(TEnum)))
576 {
577 case TypeCode.SByte:
578 {
579 bool flag = TryParseInt32Enum(enumType, value, -128, 127, ignoreCase, throwOnFailure, TypeCode.SByte, out result3);
580 sbyte source2 = (sbyte)result3;
581 result = Unsafe.As<sbyte, TEnum>(ref source2);
582 return flag;
583 }
584 case TypeCode.Int16:
585 {
586 bool flag = TryParseInt32Enum(enumType, value, -32768, 32767, ignoreCase, throwOnFailure, TypeCode.Int16, out result3);
587 short source = (short)result3;
588 result = Unsafe.As<short, TEnum>(ref source);
589 return flag;
590 }
591 case TypeCode.Int32:
592 {
593 bool flag = TryParseInt32Enum(enumType, value, int.MinValue, int.MaxValue, ignoreCase, throwOnFailure, TypeCode.Int32, out result3);
594 result = Unsafe.As<int, TEnum>(ref result3);
595 return flag;
596 }
597 case TypeCode.Byte:
598 {
599 bool flag = TryParseUInt32Enum(enumType, value, 255u, ignoreCase, throwOnFailure, TypeCode.Byte, out result6);
600 byte source4 = (byte)result6;
601 result = Unsafe.As<byte, TEnum>(ref source4);
602 return flag;
603 }
604 case TypeCode.UInt16:
605 {
606 bool flag = TryParseUInt32Enum(enumType, value, 65535u, ignoreCase, throwOnFailure, TypeCode.UInt16, out result6);
607 ushort source3 = (ushort)result6;
608 result = Unsafe.As<ushort, TEnum>(ref source3);
609 return flag;
610 }
611 case TypeCode.UInt32:
612 {
613 bool flag = TryParseUInt32Enum(enumType, value, uint.MaxValue, ignoreCase, throwOnFailure, TypeCode.UInt32, out result6);
614 result = Unsafe.As<uint, TEnum>(ref result6);
615 return flag;
616 }
617 case TypeCode.Int64:
618 {
619 long result5;
620 bool flag = TryParseInt64Enum(enumType, value, ignoreCase, throwOnFailure, out result5);
621 result = Unsafe.As<long, TEnum>(ref result5);
622 return flag;
623 }
624 case TypeCode.UInt64:
625 {
626 ulong result4;
627 bool flag = TryParseUInt64Enum(enumType, value, ignoreCase, throwOnFailure, out result4);
628 result = Unsafe.As<ulong, TEnum>(ref result4);
629 return flag;
630 }
631 default:
632 {
633 object result2;
634 bool flag = TryParseRareEnum(enumType, value, ignoreCase, throwOnFailure, out result2);
635 result = (flag ? ((TEnum)result2) : default(TEnum));
636 return flag;
637 }
638 }
639 }
static bool TryParseUInt64Enum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, out ulong result)
Definition Enum.cs:733
static bool TryParseRareEnum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, [NotNullWhen(true)] out object result)
Definition Enum.cs:759
static bool TryParseInt64Enum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, out long result)
Definition Enum.cs:705
static bool TryParseInt32Enum(RuntimeType enumType, ReadOnlySpan< char > value, int minInclusive, int maxInclusive, bool ignoreCase, bool throwOnFailure, TypeCode type, out int result)
Definition Enum.cs:641
static bool TryParseUInt32Enum(RuntimeType enumType, ReadOnlySpan< char > value, uint maxInclusive, bool ignoreCase, bool throwOnFailure, TypeCode type, out uint result)
Definition Enum.cs:673

References System.SR.Arg_MustBeEnum, System.SR.Arg_MustContainEnumInfo, System.Type.GetTypeCode(), System.Reflection.MaxValue, System.source, System.Enum.TryParseInt32Enum(), System.Enum.TryParseInt64Enum(), System.Enum.TryParseRareEnum(), System.Enum.TryParseUInt32Enum(), System.Enum.TryParseUInt64Enum(), and System.value.