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

Minahil Noor 2023年10月12日
  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