Enum.TryParse 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將一或多個列舉常數之名稱或數值的字串表示轉換為相等的列舉物件。 傳回值表示轉換是否成功。
多載
| 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
- 來源:
- 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
- 來源:
- 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
- 來源:
- 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
- 來源:
- 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
- 來源:
- 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
- 來源:
- 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的預設值。 這個參數會未初始化傳遞。
傳回
如果已成功轉換 value 參數,true;否則,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
- 來源:
- 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的預設值。 這個參數會未初始化傳遞。
傳回
如果已成功轉換 value 參數,true;否則,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
- 來源:
- 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 是布爾值支援的列舉型別。