Enum.Parse 方法

定義

把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。

多載

Parse(Type, ReadOnlySpan<Char>)

將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。

Parse(Type, String)

把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。

Parse(Type, ReadOnlySpan<Char>, Boolean)

將一或多個列舉常數之名稱或數值的字元表示範圍轉換為相等的列舉物件。 參數會定義運算是否區分大小寫。

Parse(Type, String, Boolean)

把一或多個列舉常數的名稱或數值的字串表示轉換為一個相等列舉物件。 參數會定義運算是否區分大小寫。

Parse<TEnum>(String, Boolean)

將一或多個列舉常數的名稱或數值字串表示 (由 TEnum 所指定) 轉換為相等列舉物件。 參數會定義運算是否區分大小寫。

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

將 所指定 TEnum 之一或多個列舉常數之名稱或數值的字元範圍轉換為相等的列舉物件。 參數會定義運算是否區分大小寫。

Parse<TEnum>(ReadOnlySpan<Char>)

將 所指定 TEnum 之一或多個列舉常數之名稱或數值的字元範圍轉換為相等的列舉物件。

Parse<TEnum>(String)

將一或多個列舉常數的名稱或數值字串表示 (由 TEnum 所指定) 轉換為相等列舉物件。

Parse(Type, ReadOnlySpan<Char>)

Source:
Enum.cs
Source:
Enum.cs
Source:
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 表示。

例外狀況

enumTypenull

enumType 不是 Enum

value 為空字串 ("") 或只包含空格。

value 為名稱,但不是為列舉所定義的其中一個具名常數。

value 超出 enumType 之基礎類型的範圍。

.NET 8 和更新版本: enumType 是布林值支援的列舉類型。

適用於

Parse(Type, String)

Source:
Enum.cs
Source:
Enum.cs
Source:
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 表示。

屬性

例外狀況

enumTypevaluenull

enumType 不是 Enum

-或-

value 為空字串 ("") 或只包含空格。

-或-

value 為名稱,但不是為列舉所定義的其中一個具名常數。

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)

Source:
Enum.cs
Source:
Enum.cs
Source:
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 表示。

例外狀況

enumTypenull

enumType 不是 Enum

value 為空字串 ("") 或只包含空格。

value 為名稱,但不是為列舉所定義的其中一個具名常數。

value 超出基礎類型的範圍 enumType

.NET 8 和更新版本: enumType 是布林值支援的列舉類型。

適用於

Parse(Type, String, Boolean)

Source:
Enum.cs
Source:
Enum.cs
Source:
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 表示。

屬性

例外狀況

enumTypevaluenull

enumType 不是 Enum

-或-

value 為空字串 ("") 或只包含空格。

-或-

value 為名稱,但不是為列舉所定義的其中一個具名常數。

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)

Source:
Enum.cs
Source:
Enum.cs
Source:
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

TEnum 類型的物件,其值以 value 表示。

例外狀況

TEnum 不是 Enum 類型。

valuenull

value 不包含列舉資訊。

.NET 8 和更新版本: TEnum 是布林值支援的列舉類型。

適用於

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

Source:
Enum.cs
Source:
Enum.cs
Source:
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

TEnumTEnum 別的物件,其值是以 value 表示。

例外狀況

TEnum 不是 Enum 類型。

value 不包含列舉資訊。

.NET 8 和更新版本: TEnum 是布林值支援的列舉類型。

適用於

Parse<TEnum>(ReadOnlySpan<Char>)

Source:
Enum.cs
Source:
Enum.cs
Source:
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

TEnumTEnum 別的物件,其值是以 value 表示。

例外狀況

TEnum 不是 Enum 類型。

value 不包含列舉資訊。

.NET 8 和更新版本: TEnum 是布林值支援的列舉類型。

適用於

Parse<TEnum>(String)

Source:
Enum.cs
Source:
Enum.cs
Source:
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

TEnum 類型的物件,其值以 value 表示。

例外狀況

TEnum 不是 Enum 類型。

valuenull

value 不包含列舉資訊。

.NET 8 和更新版本: TEnum 是布林值支援的列舉類型。

適用於