C# 將字串轉換為列舉型別

Minahil Noor 2023年1月30日 2020年6月9日
  1. C# 從字串到列舉 enum 的轉換-使用 Enum.Parse()Enum.TryParse() 方法
  2. C# 使用 Enum.Parse() 方法將字串轉換為列舉的異常處理
  3. C# 使用 Enum.TryParse() 將字串轉換為列舉 enum
  4. C# 使用 Enum.IsDefined() 方法檢查字串值是否存在
  5. まとめ
C# 將字串轉換為列舉型別

在 C# 中,我們使用 Enum.Parse()Enum.TryParse() 方法將字串轉換為列舉型別。這裡我們都給出了示例,但是我們建議你在將字串轉換為列舉時使用 Enum.TryParse() 方法。

C# 從字串到列舉 enum 的轉換-使用 Enum.Parse()Enum.TryParse() 方法

為了將字串轉換為列舉,我們可以使用 Enum.Parse() 方法。你必須在程式檔案頂部包含 System,因為 Enum.Parse() 是靜態方法。

列舉型別,字串值和指示符(可選)是此方法的引數。以下是使用 Enum.Parse()Enum.TryParse() 的正確語法:

EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue);
EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue,indicator); //indicator can be true or false
//To implement Enum.TryParse()
EnumName VariableName;
Enum.TryParse(StringValue, out VariableName);

現在,我們將在 C# 程式中實現此功能。

C# 使用 Enum.Parse() 將字串轉換為列舉 enum

using System;
class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         string stringvalue = "Rose";
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
          //To check if we have converted successfully
         if(Flower == Flowers.Rose)
         {
            Console.WriteLine("The Flower is Rose");
         }
      }
}

輸出:

The Flower is Rose

在這裡,我們有一個名為 Flower 的列舉,其中包含多個常量及其各自的值。我們呼叫了 Enum.Parse() 方法,將字串值 Rose 轉換為列舉。typeof(Flowers) 將返回列舉型別。最後,我們檢查了轉換是否成功。

有時,如果我們嘗試轉換的字串在列舉中不可用,則可能會發生異常。為了避免這種情況,我們將使用 try-catch 塊。

C# 使用 Enum.Parse() 方法將字串轉換為列舉的異常處理

using System;

class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         stringvalue = "Jasmine";
         try
         {
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
         }
         catch (Exception ex)
         {
         Console.WriteLine("Not Possible");
         //Set value to none
         Flower = Flowers.none;
         }
      }
}

輸出:

Not Possible

C# 使用 Enum.TryParse() 將字串轉換為列舉 enum

using System;
enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         string stringvalue = "Rose";
         //Using Enum.TryParse() 
         Flowers Flower;
         if(Enum.TryParse(stringvalue, out Flower))
         {
            Console.WriteLine(Flower == Flowers.Rose);
         }
      }
}

輸出:

True

我們也可以在 Enum.TryParse() 方法中將列舉中的常量值作為引數傳遞。以下程式實現了這一點:

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         Flowers Flower;
         
         if(Enum.TryParse("3", out Flower))
         {
            Console.WriteLine(Flower);
         }
      }
}

輸出:

Rose

你也可以使用 Enum.IsDefined() 方法檢查要轉換的字串值是否在列舉中定義。

C# 使用 Enum.IsDefined() 方法檢查字串值是否存在

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      
class Conversion{
      
      static void Main()
      {
         Console.WriteLine(Enum.IsDefined(typeof(Flowers), "Rose"));
      }
}

輸出:

True

まとめ

Enum.Parse()Enum.TryParse() 是用於將字串轉換為列舉的方法。但是,最好是使用 Enum.TryParse()

相關文章 - Csharp String

相關文章 - Csharp Enum