Enum.Parse 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。
多載
Parse(Type, ReadOnlySpan<Char>) |
將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。 |
Parse(Type, String) |
把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。 |
Parse(Type, ReadOnlySpan<Char>, Boolean) |
將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。 參數會定義運算是否區分大小寫。 |
Parse(Type, String, Boolean) |
把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。 參數會定義運算是否區分大小寫。 |
Parse<TEnum>(String, Boolean) |
將一或多個列舉常數的名稱或數值字串表示 (由 |
Parse<TEnum>(ReadOnlySpan<Char>, Boolean) |
將 所指定 |
Parse<TEnum>(ReadOnlySpan<Char>) |
將 所指定 |
Parse<TEnum>(String) |
將一或多個列舉常數的名稱或數值字串表示 (由 |
Parse(Type, ReadOnlySpan<Char>)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。
public:
static System::Object ^ Parse(Type ^ enumType, ReadOnlySpan<char> value);
public static object Parse (Type enumType, ReadOnlySpan<char> value);
static member Parse : Type * ReadOnlySpan<char> -> obj
Public Shared Function Parse (enumType As Type, value As ReadOnlySpan(Of Char)) As Object
參數
- enumType
- Type
列舉類型。
- value
- ReadOnlySpan<Char>
範圍,包含要轉換的名稱或值。
傳回
enumType
類型的物件,其值以 value
表示。
例外狀況
enumType
為 null
。
enumType
不是 Enum。
value
為空字串 ("") 或只包含空格。
value
為名稱,但不是為列舉所定義的其中一個具名常數。
value
超出 enumType
之基礎類型的範圍。
.NET 8 和更新版本: enumType
是布林值支援的列舉類型。
適用於
Parse(Type, String)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。
public:
static System::Object ^ Parse(Type ^ enumType, System::String ^ value);
public static object Parse (Type enumType, string value);
[System.Runtime.InteropServices.ComVisible(true)]
public static object Parse (Type enumType, string value);
static member Parse : Type * string -> obj
[<System.Runtime.InteropServices.ComVisible(true)>]
static member Parse : Type * string -> obj
Public Shared Function Parse (enumType As Type, value As String) As Object
參數
- enumType
- Type
列舉類型。
- value
- String
字串,包含要轉換的名稱或數值。
傳回
enumType
類型的物件,其值以 value
表示。
- 屬性
例外狀況
enumType
或 value
為 null
。
value
超出 enumType
之基礎類型的範圍。
.NET 8 和更新版本: enumType
是布林值支援的列舉類型。
範例
下列範例會 Parse(Type, String) 使用 方法來剖析藉由呼叫 GetNames 方法所建立的字串陣列。 它也會使用 Parse(Type, String) 方法來剖析包含位欄位的列舉值。
using namespace System;
[Flags]
enum class Colors
{
Red = 1,
Green = 2,
Blue = 4,
Yellow = 8
};
int main()
{
Console::WriteLine( "The entries of the Colors enumeration are:" );
Array^ a = Enum::GetNames( Colors::typeid );
Int32 i = 0;
while ( i < a->Length )
{
Object^ o = a->GetValue( i );
Console::WriteLine( o->ToString() );
i++;
}
Console::WriteLine();
Object^ orange = Enum::Parse( Colors::typeid, "Red, Yellow" );
Console::WriteLine("The orange value has the combined entries of {0}", orange );
}
/*
This code example produces the following results:
The entries of the Colors Enum are:
Red
Green
Blue
Yellow
The orange value has the combined entries of Red, Yellow
*/
using System;
public class ParseTest
{
[Flags]
enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };
public static void Main()
{
Console.WriteLine("The entries of the Colors enumeration are:");
foreach (string colorName in Enum.GetNames(typeof(Colors)))
{
Console.WriteLine("{0} = {1:D}", colorName,
Enum.Parse(typeof(Colors), colorName));
}
Console.WriteLine();
Colors orange = (Colors) Enum.Parse(typeof(Colors), "Red, Yellow");
Console.WriteLine("The orange value {0:D} has the combined entries of {0}",
orange);
}
}
/*
This code example produces the following results:
The entries of the Colors Enum are:
Red = 1
Green = 2
Blue = 4
Yellow = 8
The orange value 9 has the combined entries of Red, Yellow
*/
open System
[<Flags>]
type Colors =
| Red = 1
| Green = 2
| Blue = 4
| Yellow = 8
printfn "The entries of the Colors enumeration are:"
for colorName in Enum.GetNames typeof<Colors> do
printfn $"{colorName} = {Enum.Parse(typeof<Colors>, colorName):D}"
printfn ""
let orange = Enum.Parse(typeof<Colors>, "Red, Yellow") :?> Colors
printfn $"The orange value {orange:D} has the combined entries of {orange}"
// This code example produces the following results:
// The entries of the Colors Enum are:
// Red = 1
// Green = 2
// Blue = 4
// Yellow = 8
//
// The orange value 9 has the combined entries of Red, Yellow
Public Class ParseTest
<Flags()> _
Enum Colors
Red = 1
Green = 2
Blue = 4
Yellow = 8
End Enum
Public Shared Sub Main()
Console.WriteLine("The entries of the Colors enumeration are:")
Dim colorName As String
For Each colorName In [Enum].GetNames(GetType(Colors))
Console.WriteLine("{0} = {1:D}", colorName, [Enum].Parse(GetType(Colors), colorName))
Next
Console.WriteLine()
Dim orange As Colors = CType([Enum].Parse(GetType(Colors), "Red, Yellow"), Colors)
Console.WriteLine("The orange value {0:D} has the combined entries of {0}", orange)
End Sub
End Class
'This example displays the following output:
'
'The entries of the Colors Enum are:
'Red = 1
'Green = 2
'Blue = 4
'Yellow = 8
'
'The myOrange value 9 has the combined entries of Red, Yellow
'
備註
參數 value
包含列舉成員基礎值或具名常數的字串表示,或是以逗號分隔的具名常數清單, (,) 。 一或多個空格可以在 中的每個 value
值、名稱或逗號前面或後面加上。 如果 value
是清單,則傳回值是與位 OR
運算結合之指定名稱的值。
如果 value
是未對應至 的 enumType
具名常數的名稱,則方法會 ArgumentException 擲回 。 如果 value
是不代表列舉基礎值的 enumType
整數位符串標記法,則方法會傳回基礎值 value
轉換成整數類型的列舉成員。 如果不想要這個行為,請呼叫 IsDefined 方法,以確保整數的特定字串表示實際上是 的成員 enumType
。 下列範例會 Colors
定義列舉、呼叫 Parse(Type, String) 方法來將字串轉換成其對應的列舉值,並呼叫 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)
{
try {
Colors colorValue = (Colors) Enum.Parse(typeof(Colors), colorString);
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);
}
catch (ArgumentException) {
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
try
let colorValue = Enum.Parse(typeof<Colors>, colorString) :?> Colors
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."
with :? ArgumentException ->
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
Try
Dim colorValue As Colors = CType([Enum].Parse(GetType(Colors), colorString), Colors)
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
Catch e As ArgumentException
Console.WriteLine("'{0}' is not a member of the Colors enumeration.", colorString)
End Try
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.
這項作業會區分大小寫。
另請參閱
適用於
Parse(Type, ReadOnlySpan<Char>, Boolean)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。 參數會定義運算是否區分大小寫。
public:
static System::Object ^ Parse(Type ^ enumType, ReadOnlySpan<char> value, bool ignoreCase);
public static object Parse (Type enumType, ReadOnlySpan<char> value, bool ignoreCase);
static member Parse : Type * ReadOnlySpan<char> * bool -> obj
Public Shared Function Parse (enumType As Type, value As ReadOnlySpan(Of Char), ignoreCase As Boolean) As Object
參數
- enumType
- Type
列舉類型。
- value
- ReadOnlySpan<Char>
範圍,包含要轉換的名稱或值。
- ignoreCase
- Boolean
true
表示忽略大小寫,false
表示區分大小寫。
傳回
enumType
類型的物件,其值以 value
表示。
例外狀況
enumType
為 null
。
enumType
不是 Enum。
value
為空字串 ("") 或只包含空格。
value
為名稱,但不是為列舉所定義的其中一個具名常數。
value
超出基礎類型的範圍 enumType
.NET 8 和更新版本: enumType
是布林值支援的列舉類型。
適用於
Parse(Type, String, Boolean)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。 參數會定義運算是否區分大小寫。
public:
static System::Object ^ Parse(Type ^ enumType, System::String ^ value, bool ignoreCase);
public static object Parse (Type enumType, string value, bool ignoreCase);
[System.Runtime.InteropServices.ComVisible(true)]
public static object Parse (Type enumType, string value, bool ignoreCase);
static member Parse : Type * string * bool -> obj
[<System.Runtime.InteropServices.ComVisible(true)>]
static member Parse : Type * string * bool -> obj
Public Shared Function Parse (enumType As Type, value As String, ignoreCase As Boolean) As Object
參數
- enumType
- Type
列舉類型。
- value
- String
字串,包含要轉換的名稱或數值。
- ignoreCase
- Boolean
true
表示忽略大小寫,false
表示區分大小寫。
傳回
enumType
類型的物件,其值以 value
表示。
- 屬性
例外狀況
enumType
或 value
為 null
。
value
超出 enumType
之基礎類型的範圍。
.NET 8 和更新版本: enumType
是布林值支援的列舉類型。
範例
下列範例會 Parse(Type, String, Boolean) 使用 方法來剖析藉由呼叫 GetNames 方法所建立的字串陣列。 它也會使用 Parse(Type, String) 方法來剖析包含位欄位的列舉值。
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)
{
try {
Colors colorValue = (Colors) Enum.Parse(typeof(Colors), colorString, true);
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);
}
catch (ArgumentException) {
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
try
let colorValue = Enum.Parse(typeof<Colors>, colorString, true) :?> Colors
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."
with :? ArgumentException ->
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
Try
Dim colorValue As Colors = CType([Enum].Parse(GetType(Colors), colorString, True), Colors)
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
Catch e As ArgumentException
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End Try
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.
備註
參數 value
包含列舉成員基礎值或具名常數的字串表示,或是以逗號分隔的具名常數清單, (,) 。 一或多個空格可以在 中的每個 value
值、名稱或逗號前面或後面加上。 如果 value
是清單,則傳回值是與位 OR
運算結合之指定名稱的值。
如果 value
是未對應至 的 enumType
具名常數的名稱,則方法會 ArgumentException 擲回 。 如果 value
是不代表列舉基礎值的 enumType
整數位符串標記法,則方法會傳回基礎值 value
轉換成整數類型的列舉成員。 如果不想要這個行為,請呼叫 IsDefined 方法,以確保整數的特定字串表示實際上是 的成員 enumType
。 下列範例會 Colors
定義列舉、呼叫 Parse(Type, String, Boolean) 方法來將字串轉換成其對應的列舉值,並呼叫 IsDefined 方法,以確保特定整數值是列舉中 Colors
的基礎值。
參數 ignoreCase
會指定此作業是否區分大小寫。
另請參閱
適用於
Parse<TEnum>(String, Boolean)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將一或多個列舉常數的名稱或數值字串表示 (由 TEnum
所指定) 轉換為相等列舉物件。 參數會定義運算是否區分大小寫。
public:
generic <typename TEnum>
where TEnum : value class static TEnum Parse(System::String ^ value, bool ignoreCase);
public static TEnum Parse<TEnum> (string value, bool ignoreCase) where TEnum : struct;
static member Parse : string * bool -> 'Enum (requires 'Enum : struct)
Public Shared Function Parse(Of TEnum As Structure) (value As String, ignoreCase As Boolean) As TEnum
類型參數
- TEnum
列舉類型。
參數
- value
- String
字串,包含要轉換的名稱或數值。
- ignoreCase
- Boolean
true
表示忽略大小寫,false
表示區分大小寫。
傳回
TEnum
類型的物件,其值以 value
表示。
例外狀況
TEnum
不是 Enum 類型。
value
為 null
。
value
不包含列舉資訊。
.NET 8 和更新版本: TEnum
是布林值支援的列舉類型。
適用於
Parse<TEnum>(ReadOnlySpan<Char>, Boolean)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將 所指定 TEnum
之一或多個列舉常數之名稱或數值的字元範圍轉換為相等的列舉物件。 參數會定義運算是否區分大小寫。
public:
generic <typename TEnum>
where TEnum : value class static TEnum Parse(ReadOnlySpan<char> value, bool ignoreCase);
public static TEnum Parse<TEnum> (ReadOnlySpan<char> value, bool ignoreCase) where TEnum : struct;
static member Parse : ReadOnlySpan<char> * bool -> 'Enum (requires 'Enum : struct)
Public Shared Function Parse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char), ignoreCase As Boolean) As TEnum
類型參數
- TEnum
列舉類型。
參數
- value
- ReadOnlySpan<Char>
範圍,包含要轉換的名稱或值。
- ignoreCase
- Boolean
true
表示忽略大小寫,false
表示區分大小寫。
傳回
TEnum
型 TEnum
別的物件,其值是以 value
表示。
例外狀況
TEnum
不是 Enum 類型。
value
不包含列舉資訊。
.NET 8 和更新版本: TEnum
是布林值支援的列舉類型。
適用於
Parse<TEnum>(ReadOnlySpan<Char>)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將 所指定 TEnum
之一或多個列舉常數之名稱或數值的字元範圍轉換為相等的列舉物件。
public:
generic <typename TEnum>
where TEnum : value class static TEnum Parse(ReadOnlySpan<char> value);
public static TEnum Parse<TEnum> (ReadOnlySpan<char> value) where TEnum : struct;
static member Parse : ReadOnlySpan<char> -> 'Enum (requires 'Enum : struct)
Public Shared Function Parse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char)) As TEnum
類型參數
- TEnum
列舉類型。
參數
- value
- ReadOnlySpan<Char>
範圍,包含要轉換的名稱或值。
傳回
TEnum
型 TEnum
別的物件,其值是以 value
表示。
例外狀況
TEnum
不是 Enum 類型。
value
不包含列舉資訊。
.NET 8 和更新版本: TEnum
是布林值支援的列舉類型。
適用於
Parse<TEnum>(String)
- 來源:
- Enum.cs
- 來源:
- Enum.cs
- 來源:
- Enum.cs
將一或多個列舉常數的名稱或數值字串表示 (由 TEnum
所指定) 轉換為相等列舉物件。
public:
generic <typename TEnum>
where TEnum : value class static TEnum Parse(System::String ^ value);
public static TEnum Parse<TEnum> (string value) where TEnum : struct;
static member Parse : string -> 'Enum (requires 'Enum : struct)
Public Shared Function Parse(Of TEnum As Structure) (value As String) As TEnum
類型參數
- TEnum
列舉類型。
參數
- value
- String
字串,包含要轉換的名稱或數值。
傳回
TEnum
類型的物件,其值以 value
表示。
例外狀況
TEnum
不是 Enum 類型。
value
為 null
。
value
不包含列舉資訊。
.NET 8 和更新版本: TEnum
是布林值支援的列舉類型。
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應