Feedback

C# - String zu Enum

Veröffentlicht von am 15.11.2008
(2 Bewertungen)
Dieses Snippet/Beispiel zeigt wie ein String in eine Instanz eines Enum gewandelt werden kann.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

using System;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			string enumString = "b";
			MyEnum myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), enumString);
		}
	}

	public enum MyEnum
	{
		a,
		b,
		c
	}
}
Abgelegt unter Enum, String zu Enum.

1 Kommentare zum Snippet

FoidlSpast schrieb am 15.08.2018:
Das ist ja einfach nur hingeklatscht...
Aber da es auch richtige Programmierer gibt, hier eine Enum-Konvertierung als Erweiterungsmethode von string:


public static class EnumExtensions
{
public static T ToEnum<T>(this string value) where T : struct, Enum
{
if (Enum.TryParse(value, out T res))
{
return res;
}
else
{
throw new ArgumentException("Could not parse \"" + value + "\"");
}
}
}

public enum TestEnum
{
Wert1,
Wert2,
Wert3
}



Der Aufruf ist spielend einfach:


enum Enumeration
{
Wert1,
Wert2,
Wert3
}

static void Main(string[] args)
{
string str = "Wert2";

Enumeration en = str.ToEnum<Enumeration>();

Console.WriteLine(en.ToString());
Console.ReadKey();
}


Alternativ kann man den Teil


throw new ArgumentException("Could not parse \"" + value + "\"");


auch mit


return default(T);


ersetzen, um so den Standardwert auszugeben, wenn der Wert nicht als gültiger Enum von "Enum.TryParse" erkannt wird. In diesem Fall wäre das "Wert1".
 

Logge dich ein, um hier zu kommentieren!