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, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse (Type enumType, ReadOnlySpan<char> value, out object? result);
static member TryParse : Type * ReadOnlySpan<char> * obj -> bool
Public Shared Function TryParse (enumType As Type, value As ReadOnlySpan(Of Char), ByRef result As Object) As Boolean
Параметры
- enumType
- Type
Тип перечисления, используемый для разбора.
- value
- ReadOnlySpan<Char>
Представление диапазона имени или числового значения одной или нескольких перечисляемых констант.
- result
- Object
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
.NET 8 и более поздних версий: enumType
является логическим типом перечисления.
Применяется к
TryParse(Type, String, Object)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект.
public:
static bool TryParse(Type ^ enumType, System::String ^ value, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse (Type enumType, string? value, out object? result);
public static bool TryParse (Type enumType, string value, out object result);
static member TryParse : Type * string * obj -> bool
Public Shared Function TryParse (enumType As Type, value As String, ByRef result As Object) As Boolean
Параметры
- enumType
- Type
Тип перечисления, используемый для разбора.
- value
- String
Строковое представление имени или числового значения одной или нескольких перечислимых констант.
- result
- Object
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
.NET 8 и более поздних версий: enumType
является логическим типом перечисления.
Применяется к
TryParse(Type, ReadOnlySpan<Char>, Boolean, Object)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует представление диапазона символов имени или числового значения одной или нескольких перечисляемых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли в операции регистр.
public:
static bool TryParse(Type ^ enumType, ReadOnlySpan<char> value, bool ignoreCase, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse (Type enumType, ReadOnlySpan<char> value, bool ignoreCase, out object? result);
static member TryParse : Type * ReadOnlySpan<char> * bool * obj -> bool
Public Shared Function TryParse (enumType As Type, value As ReadOnlySpan(Of Char), ignoreCase As Boolean, ByRef result As Object) As Boolean
Параметры
- enumType
- Type
Тип перечисления, используемый для разбора.
- value
- ReadOnlySpan<Char>
Представление диапазона имени или числового значения одной или нескольких перечисляемых констант.
- ignoreCase
- Boolean
Значение true
для чтения enumType
в режиме без учета регистра; значение false
для чтения enumType
в режиме с учетом регистра.
- result
- Object
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
.NET 8 и более поздних версий: enumType
является логическим типом перечисления.
Применяется к
TryParse(Type, String, Boolean, Object)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект.
public:
static bool TryParse(Type ^ enumType, System::String ^ value, bool ignoreCase, [Runtime::InteropServices::Out] System::Object ^ % result);
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);
static member TryParse : Type * string * bool * obj -> bool
Public Shared Function TryParse (enumType As Type, value As String, ignoreCase As Boolean, ByRef result As Object) As Boolean
Параметры
- enumType
- Type
Тип перечисления, используемый для разбора.
- value
- String
Строковое представление имени или числового значения одной или нескольких перечислимых констант.
- ignoreCase
- Boolean
Значение true
для чтения value
в режиме без учета регистра; значение false
для чтения value
в режиме с учетом регистра.
- result
- Object
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
.NET 8 и более поздних версий: enumType
является логическим типом перечисления.
Применяется к
TryParse<TEnum>(ReadOnlySpan<Char>, TEnum)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(ReadOnlySpan<char> value, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum> (ReadOnlySpan<char> value, out TEnum result) where TEnum : struct;
static member TryParse : ReadOnlySpan<char> * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char), ByRef result As TEnum) As Boolean
Параметры типа
- TEnum
Тип объекта result
.
Параметры
- value
- ReadOnlySpan<Char>
Представление диапазона имени или числового значения одной или нескольких перечисляемых констант.
- result
- TEnum
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
TEnum
не является типом перечисления.
.NET 8 и более поздних версий: TEnum
является логическим типом перечисления.
Применяется к
TryParse<TEnum>(String, TEnum)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект. Возвращаемое значение указывает, успешно ли выполнено преобразование.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(System::String ^ value, [Runtime::InteropServices::Out] TEnum % result);
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;
static member TryParse : string * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As String, ByRef result As TEnum) As Boolean
Параметры типа
- 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.
open System
[<Flags>]
type Colors =
| None = 0
| Red = 1
| Green = 2
| Blue = 4
let colorStrings =
[ "0"; "2"; "8"; "blue"; "Blue"; "Yellow"; "Red, Green" ]
for colorString in colorStrings do
match Enum.TryParse colorString with
| true, colorValue ->
if Enum.IsDefined(typeof<Colors>, colorValue) || (string colorValue).Contains "," then
printfn $"Converted '{colorString}' to {colorValue}."
else
printfn $"{colorString} is not an underlying value of the Colors enumeration."
| _ ->
printfn $"{colorString} is not a member of the Colors enumeration."
// 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.
<Flags> Enum Colors As Integer
None = 0
Red = 1
Green = 2
Blue = 4
End Enum
Module Example
Public Sub Main()
Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
For Each colorString As String In colorStrings
Dim colorValue As Colors
If [Enum].TryParse(colorString, colorValue) Then
If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
Else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)
End If
Else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End If
Next
End Sub
End Module
' 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.
См. также раздел
Применяется к
TryParse<TEnum>(String, Boolean, TEnum)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли в операции регистр. Возвращаемое значение указывает, успешно ли выполнено преобразование.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(System::String ^ value, bool ignoreCase, [Runtime::InteropServices::Out] TEnum % result);
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;
static member TryParse : string * bool * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As String, ignoreCase As Boolean, ByRef result As TEnum) As Boolean
Параметры типа
- 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.
open System
[<Flags>]
type Colors =
| None = 0
| Red = 1
| Green = 2
| Blue = 4
let colorStrings =
[ "0"; "2"; "8"; "blue"; "Blue"; "Yellow"; "Red, Green" ]
for colorString in colorStrings do
match Enum.TryParse(colorString, true) with
| true, colorValue ->
if Enum.IsDefined(typeof<Colors>, colorValue) || (string colorValue).Contains "," then
printfn $"Converted '{colorString}' to {colorValue}."
else
printfn $"{colorString} is not an underlying value of the Colors enumeration."
| _ ->
printfn $"{colorString} is not a member of the Colors enumeration."
// 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.
<Flags> Enum Colors As Integer
None = 0
Red = 1
Green = 2
Blue = 4
End Enum
Module Example
Public Sub Main()
Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
For Each colorString As String In colorStrings
Dim colorValue As Colors
If [Enum].TryParse(colorString, True, colorValue) Then
If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
Else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)
End If
Else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End If
Next
End Sub
End Module
' 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.
См. также раздел
Применяется к
TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum)
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
- Исходный код:
- Enum.cs
Преобразует строковое представление имени или числового значения одной или нескольких перечислимых констант в эквивалентный перечислимый объект. Параметр указывает, учитывается ли в операции регистр. Возвращаемое значение указывает, успешно ли выполнено преобразование.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(ReadOnlySpan<char> value, bool ignoreCase, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum> (ReadOnlySpan<char> value, bool ignoreCase, out TEnum result) where TEnum : struct;
static member TryParse : ReadOnlySpan<char> * bool * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char), ignoreCase As Boolean, ByRef result As TEnum) As Boolean
Параметры типа
- TEnum
Тип объекта result
.
Параметры
- value
- ReadOnlySpan<Char>
Представление диапазона имени или числового значения одной или нескольких перечисляемых констант.
- ignoreCase
- Boolean
Значение true
, чтобы игнорировать регистр; значение false
, чтобы учитывать регистр.
- result
- TEnum
Когда этот метод возвращает true
, содержит константу перечисления, представляющую проанализированное значение.
Возвращаемое значение
true
, если преобразование выполнено успешно; в противном случае значение false
.
Исключения
TEnum
не является типом перечисления.
.NET 8 и более поздних версий: TEnum
является логическим типом перечисления.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по