Converti Enum in stringa in C#

Muhammad Maisam Abbas 12 ottobre 2023
  1. Converti enumerazione in stringa con l’attributo Description in C#
  2. Converti Enum in stringa con l’istruzione switch in C#
Converti Enum in stringa in C#

Questo tutorial discuterà i metodi per convertire un enum in una stringa in C#.

Converti enumerazione in stringa con l’attributo Description in C#

Non dobbiamo usare nulla per convertirlo in una stringa per un semplice valore Enum che segue le convenzioni di denominazione. Può essere mostrato all’utente con la funzione Console.WriteLine() in C#. È dimostrato nell’esempio di codifica riportato di seguito.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enum_to_string {
  public enum Status { InProgress, Completed }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      Console.WriteLine(complete);
    }
  }
}

Produzione:

Completed

Nel codice sopra, abbiamo stampato direttamente il valore Enum Completed in formato stringa in C#. Ciò è stato possibile perché il nostro valore Enum seguiva le convenzioni di denominazione delle variabili in C#. Ma se vogliamo visualizzare una stringa di facile lettura, dobbiamo usare l’attributo Description di Enums in C#. L’attributo Description viene utilizzato per descrivere ogni valore di un Enum. Possiamo convertire il nostro Enum in una stringa di facile lettura scrivendo la stringa all’interno dell’attributo Description di Enum. Il seguente esempio di codice ci mostra come convertire un valore Enum in una stringa con l’attributo Description in C#.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

namespace enum_to_string {
  public enum Status {
    [Description("The Desired Task is InProgress")] InProgress,
    [Description("The Desired Task is Successfully Completed")] Completed
  }
  static class extensionClass {
    public static string getDescription(this Enum e) {
      Type eType = e.GetType();
      string eName = Enum.GetName(eType, e);
      if (eName != null) {
        FieldInfo fieldInfo = eType.GetField(eName);
        if (fieldInfo != null) {
          DescriptionAttribute descriptionAttribute = Attribute.GetCustomAttribute(
              fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
          if (descriptionAttribute != null) {
            return descriptionAttribute.Description;
          }
        }
      }
      return null;
    }
  }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      string description = complete.getDescription();
      Console.WriteLine(description);
    }
  }
}

Produzione:

The Desired Task is Successfully Completed

Nel codice precedente, abbiamo creato un metodo di estensione, getDescription, che restituisce la descrizione del valore Enum in C#. Questo metodo funziona perfettamente, ma è un po’ complesso. Questa complessità è semplificata nella sezione successiva.

Converti Enum in stringa con l’istruzione switch in C#

Molta complessità del metodo precedente può essere semplificata utilizzando l’istruzione switch in C#. Possiamo assegnare il valore desiderato alla nostra variabile stringa per ogni valore Enum con l’istruzione switch in C#. Vedere il seguente esempio di codice.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

namespace enum_to_string {
  public enum Status { InProgress, Completed }
  static class extensionClass {
    public static string getValue(this Status e) {
      switch (e) {
        case Status.InProgress:
          return "The Desired Task is InProgress";
        case Status.Completed:
          return "The Desired Task is Successfully Completed";
      }
      return String.Empty;
    }
  }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      string value = complete.getValue();
      Console.WriteLine(value);
    }
  }
}

Produzione:

The Desired Task is Successfully Completed

Nel codice precedente, abbiamo creato un metodo di estensione, getValue(), che restituisce una stringa basata sul valore Enum utilizzando l’istruzione switch in C#. La funzione getValue() utilizza l’istruzione switch e restituisce una stringa diversa per ogni valore del nostro Enum specificato.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Articolo correlato - Csharp Enum

Articolo correlato - Csharp String