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
是布爾值支援的列舉型別。