Прочитать на английском

Поделиться через


Enum.TryParse Метод

Определение

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Возвращаемое значение указывает, выполнено ли преобразование успешно.

Перегрузки

TryParse(Type, ReadOnlySpan<Char>, Object)

Преобразует диапазон символов представления имени или числового значения одной или нескольких перечисленных констант в эквивалентный перечислимый объект.

TryParse(Type, String, Object)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

TryParse(Type, ReadOnlySpan<Char>, Boolean, Object)

Преобразует диапазон символов представления имени или числового значения одной или нескольких перечисленных констант в эквивалентный перечислимый объект. Параметр указывает, не учитывается ли операция регистра.

TryParse(Type, String, Boolean, Object)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

TryParse<TEnum>(ReadOnlySpan<Char>, TEnum)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

TryParse<TEnum>(String, TEnum)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Возвращаемое значение указывает, выполнено ли преобразование успешно.

TryParse<TEnum>(String, Boolean, TEnum)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли операция регистром. Возвращаемое значение указывает, выполнено ли преобразование успешно.

TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum)

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли операция регистром. Возвращаемое значение указывает, выполнено ли преобразование успешно.

TryParse(Type, ReadOnlySpan<Char>, Object)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует диапазон символов представления имени или числового значения одной или нескольких перечисленных констант в эквивалентный перечислимый объект.

public static bool TryParse(Type enumType, ReadOnlySpan<char> value, out object? result);

Параметры

enumType
Type

Тип перечисления, используемый для синтаксического анализа.

value
ReadOnlySpan<Char>

Представление диапазона имени или числового значения одной или нескольких перечисленных констант.

result
Object

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

.NET 8 и более поздних версий: enumType является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET 6, 7, 8, 9, 10

TryParse(Type, String, Object)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

public static bool TryParse(Type enumType, string? value, out object? result);
public static bool TryParse(Type enumType, string value, out object result);

Параметры

enumType
Type

Тип перечисления, используемый для синтаксического анализа.

value
String

Строковое представление имени или числового значения одной или нескольких перечисленных констант.

result
Object

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

.NET 8 и более поздних версий: enumType является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse(Type, ReadOnlySpan<Char>, Boolean, Object)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует диапазон символов представления имени или числового значения одной или нескольких перечисленных констант в эквивалентный перечислимый объект. Параметр указывает, не учитывается ли операция регистра.

public static bool TryParse(Type enumType, ReadOnlySpan<char> value, bool ignoreCase, out object? result);

Параметры

enumType
Type

Тип перечисления, используемый для синтаксического анализа.

value
ReadOnlySpan<Char>

Представление диапазона имени или числового значения одной или нескольких перечисленных констант.

ignoreCase
Boolean

true для чтения enumType в режиме без учета регистра; false для чтения enumType в режиме конфиденциальности регистра.

result
Object

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

.NET 8 и более поздних версий: enumType является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET 6, 7, 8, 9, 10

TryParse(Type, String, Boolean, Object)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

public static bool TryParse(Type enumType, string? value, bool ignoreCase, out object? result);
public static bool TryParse(Type enumType, string value, bool ignoreCase, out object result);

Параметры

enumType
Type

Тип перечисления, используемый для синтаксического анализа.

value
String

Строковое представление имени или числового значения одной или нескольких перечисленных констант.

ignoreCase
Boolean

true для чтения value в режиме без учета регистра; false для чтения value в режиме конфиденциальности регистра.

result
Object

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

.NET 8 и более поздних версий: enumType является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse<TEnum>(ReadOnlySpan<Char>, TEnum)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект.

public static bool TryParse<TEnum>(ReadOnlySpan<char> value, out TEnum result) where TEnum : struct;

Параметры типа

TEnum

Тип объекта result.

Параметры

value
ReadOnlySpan<Char>

Представление диапазона имени или числового значения одной или нескольких перечисленных констант.

result
TEnum

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

TEnum не является типом перечисления.

.NET 8 и более поздних версий: TEnum является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET 6, 7, 8, 9, 10

TryParse<TEnum>(String, TEnum)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Возвращаемое значение указывает, выполнено ли преобразование успешно.

public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct;
public static bool TryParse<TEnum>(string? value, out TEnum result) where TEnum : struct;

Параметры типа

TEnum

Тип перечисления, в который необходимо преобразовать value.

Параметры

value
String

Строковое представление имени перечисления или базового значения для преобразования.

result
TEnum

При возврате этого метода содержит объект типа TEnum, значение которого представлено value, если операция синтаксического анализа выполнена успешно. Если операция синтаксического анализа завершается ошибкой, содержит значение по умолчанию базового типа TEnum. Этот параметр передается неинициализирован.

Возвращаемое значение

true, если параметр value был успешно преобразован; в противном случае false.

Исключения

TEnum не является типом перечисления.

.NET 8 и более поздних версий: TEnum является логическим типом перечисления.

Примеры

В следующем примере определяется перечисление Colors, вызывается метод TryParse<TEnum>(String, TEnum) для преобразования строк в соответствующие значения перечисления и вызывает метод IsDefined, чтобы гарантировать, что определенные целочисленные значения являются базовыми значениями в перечислении Colors.

using System;

[Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };

public class Example
{
   public static void Main()
   {
      string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
      foreach (string colorString in colorStrings)
      {
         Colors colorValue;
         if (Enum.TryParse(colorString, out colorValue))
            if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
               Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
            else
               Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
         else
            Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
      }
   }
}
// The example displays the following output:
//       Converted '0' to None.
//       Converted '2' to Green.
//       8 is not an underlying value of the Colors enumeration.
//       blue is not a member of the Colors enumeration.
//       Converted 'Blue' to Blue.
//       Yellow is not a member of the Colors enumeration.
//       Converted 'Red, Green' to Red, Green.

Комментарии

TryParse<TEnum>(String, TEnum) идентичен методу Parse(Type, String), за исключением того, что вместо создания исключения он возвращает false, если преобразование завершается ошибкой. Это устраняет необходимость обработки исключений при анализе строкового представления значения перечисления.

Параметр value содержит строковое представление базового значения элемента перечисления или именованной константы, а также список именованных констант или базовых значений, разделенных запятыми (,). Если value включает несколько именованных констант или значений, одно или несколько пустых пробелов могут предшествовать или следовать каждому значению, имени или запятой в value. Если value является списком, result отражает значение указанных имен или базовых значений в сочетании с побитовой OR операцией. Если value является строковым представлением имени значения перечисления, сравнение value с именами перечислений учитывает регистр.

Если value — это имя, которое не соответствует именованной константе TEnum, метод возвращает false. Если value представляет строковое представление целочисленного числа, которое не представляет базовое значение перечисления TEnum, метод возвращает элемент перечисления, базовый значение которого value преобразовано в целочисленный тип. Если это поведение нежелательно, вызовите метод IsDefined, чтобы убедиться, что определенное строковое представление целого числа фактически является членом TEnum.

Если операция синтаксического анализа завершается ошибкой, параметр result содержит значение по умолчанию 0, которое может не быть членом базового перечисления TEnum. Если именованные константы в TEnumне назначены, значение по умолчанию равно первому элементу TEnum. В противном случае значение по умолчанию равно члену перечисления с назначенным значением 0.

См. также раздел

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse<TEnum>(String, Boolean, TEnum)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли операция регистром. Возвращаемое значение указывает, выполнено ли преобразование успешно.

public static bool TryParse<TEnum>(string value, bool ignoreCase, out TEnum result) where TEnum : struct;
public static bool TryParse<TEnum>(string? value, bool ignoreCase, out TEnum result) where TEnum : struct;

Параметры типа

TEnum

Тип перечисления, в который необходимо преобразовать value.

Параметры

value
String

Строковое представление имени перечисления или базового значения для преобразования.

ignoreCase
Boolean

true игнорировать регистр; false рассмотреть дело.

result
TEnum

При возврате этого метода содержит объект типа TEnum, значение которого представлено value, если операция синтаксического анализа выполнена успешно. Если операция синтаксического анализа завершается ошибкой, содержит значение по умолчанию базового типа TEnum. Этот параметр передается неинициализирован.

Возвращаемое значение

true, если параметр value был успешно преобразован; в противном случае false.

Исключения

TEnum не является типом перечисления.

.NET 8 и более поздних версий: TEnum является логическим типом перечисления.

Примеры

В следующем примере определяется перечисление Colors, вызывается метод TryParse<TEnum>(String, Boolean, TEnum) для преобразования строк в соответствующие значения перечисления и вызывает метод IsDefined, чтобы гарантировать, что определенные целочисленные значения являются базовыми значениями в перечислении Colors. Метод TryParse<TEnum>(String, Boolean, TEnum) использует сравнение без учета регистра при попытке преобразовать строковые представления именованных констант в эквивалентные значения перечисления.

using System;

[Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };

public class Example
{
   public static void Main()
   {
      string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
      foreach (string colorString in colorStrings)
      {
         Colors colorValue;
         if (Enum.TryParse(colorString, true, out colorValue))
            if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
               Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
            else
               Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
         else
            Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
      }
   }
}
// The example displays the following output:
//       Converted '0' to None.
//       Converted '2' to Green.
//       8 is not an underlying value of the Colors enumeration.
//       Converted 'blue' to Blue.
//       Converted 'Blue' to Blue.
//       Yellow is not a member of the Colors enumeration.
//       Converted 'Red, Green' to Red, Green.

Комментарии

TryParse<TEnum>(String, Boolean, TEnum) идентичен методу Parse(Type, String, Boolean), за исключением того, что вместо создания исключения он возвращает false, если преобразование завершается ошибкой. Это устраняет необходимость обработки исключений при анализе строкового представления значения перечисления.

Параметр value содержит строковое представление базового значения элемента перечисления или именованной константы, а также список именованных констант или базовых значений, разделенных запятыми (,). Если value включает несколько именованных констант или значений, одно или несколько пустых пробелов могут предшествовать или следовать каждому значению, имени или запятой в value. Если value является списком, result отражает значение указанных имен или базовых значений в сочетании с побитовой OR операцией. Если value является строковым представлением имени значения перечисления, сравнение value с именами перечислений зависит от параметра ignoreCase. Если true, сравнение не учитывает регистр; Если false, учитывается регистр.

Если value — это имя, которое не соответствует именованной константе TEnum, метод возвращает false. Если value представляет строковое представление целочисленного числа, которое не представляет базовое значение перечисления TEnum, метод возвращает элемент перечисления, базовый значение которого value преобразовано в целочисленный тип. Если это поведение нежелательно, вызовите метод IsDefined, чтобы убедиться, что определенное строковое представление целого числа фактически является членом TEnum.

Если операция синтаксического анализа завершается ошибкой, параметр result содержит значение по умолчанию 0, которое может не быть членом базового перечисления TEnum. Если именованные константы в TEnumне назначены, значение по умолчанию равно первому элементу TEnum. В противном случае значение по умолчанию равно члену перечисления с назначенным значением 0.

См. также раздел

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum)

Исходный код:
Enum.cs
Исходный код:
Enum.cs
Исходный код:
Enum.cs

Преобразует строковое представление имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли операция регистром. Возвращаемое значение указывает, выполнено ли преобразование успешно.

public static bool TryParse<TEnum>(ReadOnlySpan<char> value, bool ignoreCase, out TEnum result) where TEnum : struct;

Параметры типа

TEnum

Тип объекта result.

Параметры

value
ReadOnlySpan<Char>

Представление диапазона имени или числового значения одной или нескольких перечисленных констант.

ignoreCase
Boolean

true игнорировать регистр; false рассмотреть дело.

result
TEnum

Когда этот метод возвращает true, содержит константу перечисления, представляющую проанализированное значение.

Возвращаемое значение

true, если преобразование выполнено успешно; false в противном случае.

Исключения

TEnum не является типом перечисления.

.NET 8 и более поздних версий: TEnum является логическим типом перечисления.

Применяется к

.NET 10 и другие версии
Продукт Версии
.NET 6, 7, 8, 9, 10