Enumerationen

Enumerationen

Description: In diesem Video lernt ihr Enumerationen zu erstellen und diese in einer einfachen Anwendung zu verwenden.

Duration: PT13M18S

ContentUrl: https://progressivemlx-a.akamaihd.net:443/asset-9379924e-2e5f-434b-a550-a26d04b14b39/20616-277766-dsjpdadm.csw_H264_3400kbps_AAC_und_ch2_96kbps.mp4?sv=2012-02-12&sr=c&si=9c53293c-4f4e-4b5a-8f64-d693bf8e3bca&sig=%2BaiVP%2BKQFMadBf75r6gqTpk4WBKHcXL1s6dFuPEjjmk%3D&st=2016-03-23T03%3A43%3A23Z&se=2018-12-18T03%3A43%3A23Z

EmbedUrl: https://mva.microsoft.com/en-US/training-courses-embed/c-fundamentals-for-absolute-beginners-16169/Video-Enumerations-and-the-Switch-Decision-Statement-dHjsrIRIC_1806218949

UploadDate: 2016-03-25T12:40:00+02:00

Thumbnail

Inhaltszusammenfassung

Eine Enumeration ist eine Aufzählung von Werten. Zum Beispiel kann eine Enumeration namens "Farbe" BLAU, ROT und GELB beinhalten. Eine typische Enumeration mit der ihr sicher schon einmal gearbeitet habt, ist der Boolean. Beim Boolean hat man die Aufzählungen TRUE und FALSE zur Auswahl.


Durchführung

Erstelle ein neues Konsolenanwendungsprogramm. Unter der Programm-Klasse erstellen wir nun eine neue Klasse "Todo" und eine Enumeration namens "Status" mit folgenden Werten:

class Todo
{
public string Description { get; set; }
public int EstimatedHours { get; set; }
public Status Status { get; set; }
}

enum Status
{
NotStarted,
InProgress,
OnHold,
Completed,
Deleted
}

Erstellen wir ein kleines Beispiel, an dem wir eine Liste von Todos in einer Schleife ausgeben und je nach Status die Textfarbe ändern. Dazu vergleichen wir in einem Switch die Enumeration. Aber vorerst erstellen wir eine Liste von Todos mit Probewerten und rufen eine Methode für die Ausgabe der Todos auf:

static void Main(string[] args)
{
List<Todo> todos = new List<Todo>()
{
new Todo { Description = "Task 1", EstimatedHours = 6, Status = Status.Completed },
new Todo { Description = "Task 2", EstimatedHours = 2, Status = Status.InProgress },
new Todo { Description = "Task 3", EstimatedHours = 8, Status = Status.NotStarted },
new Todo { Description = "Task 4", EstimatedHours = 12, Status = Status.Deleted },
new Todo { Description = "Task 5", EstimatedHours = 6, Status = Status.InProgress },
new Todo { Description = "Task 6", EstimatedHours = 2, Status = Status.NotStarted },
new Todo { Description = "Task 7", EstimatedHours = 14, Status = Status.NotStarted },
new Todo { Description = "Task 8", EstimatedHours = 8, Status = Status.Completed },
new Todo { Description = "Task 9", EstimatedHours = 8, Status = Status.InProgress },
new Todo { Description = "Task 10", EstimatedHours = 8, Status = Status.Completed },
new Todo { Description = "Task 11", EstimatedHours = 4, Status = Status.NotStarted },
new Todo { Description = "Task 12", EstimatedHours = 10, Status = Status.Completed },
new Todo { Description = "Task 13", EstimatedHours = 12, Status = Status.Deleted },
new Todo { Description = "Task 14", EstimatedHours = 6, Status = Status.Completed }
};

PrintAssessment(todos);
Console.ReadLine();
}

Erstellen wir die Methode zur Konsolenausgabe der Todos:
Im Case vom Switch steht jetzt kein String oder Int, sondern unser Enumerationstyp.

private static void PrintAssessment(List<Todo> todos)
{
foreach (var todo in todos)
{
switch (todo.Status)
{
case Status.NotStarted:
Console.ForegroundColor = ConsoleColor.Red;
break;
case Status.InProgress:
Console.ForegroundColor = ConsoleColor.Green;
break;
case Status.OnHold:
Console.ForegroundColor = ConsoleColor.DarkRed;
break;
case Status.Completed:
Console.ForegroundColor = ConsoleColor.Blue;
break;
case Status.Deleted:
Console.ForegroundColor = ConsoleColor.Yellow;
break;
default:
break;
}
Console.WriteLine(todo.Description);
}
}

Das hier verwendete foreach ist eine Schleife, in der die Liste "todos" durchlaufen wird. Der Schleifenrumpf, also das Switch Statement, wird für jedes todo in todos aufgerufen. 
Notiz: Eine Variable von einer Enumeration "Farbe" erkennt nur Aufzählungen aus Farbe und nicht aus anderen Enumerationen wie z.B. Obst.


Vollständiger Programmcode

class Program
{
static void Main(string[] args)
{
List<Todo> todos = new List<Todo>()
{
new Todo { Description = "Task 1", EstimatedHours = 6, Status = Status.Completed },
new Todo { Description = "Task 2", EstimatedHours = 2, Status = Status.InProgress },
new Todo { Description = "Task 3", EstimatedHours = 8, Status = Status.NotStarted },
new Todo { Description = "Task 4", EstimatedHours = 12, Status = Status.Deleted },
new Todo { Description = "Task 5", EstimatedHours = 6, Status = Status.InProgress },
new Todo { Description = "Task 6", EstimatedHours = 2, Status = Status.NotStarted },
new Todo { Description = "Task 7", EstimatedHours = 14, Status = Status.NotStarted },
new Todo { Description = "Task 8", EstimatedHours = 8, Status = Status.Completed },
new Todo { Description = "Task 9", EstimatedHours = 8, Status = Status.InProgress },
new Todo { Description = "Task 10", EstimatedHours = 8, Status = Status.Completed },
new Todo { Description = "Task 11", EstimatedHours = 4, Status = Status.NotStarted },
new Todo { Description = "Task 12", EstimatedHours = 10, Status = Status.Completed },
new Todo { Description = "Task 13", EstimatedHours = 12, Status = Status.Deleted },
new Todo { Description = "Task 14", EstimatedHours = 6, Status = Status.Completed }
};

Console.ForegroundColor = ConsoleColor.DarkRed;

PrintAssessment(todos);
Console.ReadLine();
}

private static void PrintAssessment(List<Todo> todos)
{
foreach (var todo in todos)
{
switch (todo.Status)
{
case Status.NotStarted:
Console.ForegroundColor = ConsoleColor.Red;
break;
case Status.InProgress:
Console.ForegroundColor = ConsoleColor.Green;
break;
case Status.OnHold:
Console.ForegroundColor = ConsoleColor.DarkRed;
break;
case Status.Completed:
Console.ForegroundColor = ConsoleColor.Blue;
break;
case Status.Deleted:
Console.ForegroundColor = ConsoleColor.Yellow;
break;
default:
break;
}
Console.WriteLine(todo.Description);
}
}
}

class Todo
{
public string Description { get; set; }
public int EstimatedHours { get; set; }
public Status Status { get; set; }
}

enum Status
{
NotStarted,
InProgress,
OnHold,
Completed,
Deleted
}