Enumerationen in C# Wert auslesen?


19.10.2020, 03:12

Da ichs nun geschafft habe den Code zu schreiben hier einmal für die Leute, die sich vielleicht die gleiche Frage stellen.

using System;

namespace ConsoleApp1

{

class Program

{

public enum Airbus { A300= 200, A310, A318= 100, A319, A320, A321, A330= 300, A340, A380= 400 }

static void Main(string[] args)

{

int airbusValue = (int)Airbus.A321;

Console.WriteLine("Der Wert für A321 ist {0}", airbusValue);

Console.Read();

}

}

}

3 Antworten

Der Wert wäre 103.

So sieht die Werteverteilung aus:

A300 = 200
A310 = 201
A318 = 100
A319 = 101
A320 = 102
A321 = 103
A330 = 300
A340 = 310
A380 = 400

Die Zählung setzt sich also um 1 fort, beginnend bei dem letzten konkret vorgegebenen Wert. Würde es gar keinen geben, würde das Enum beim Startwert 0 beginnen.

(...) da ich momentan auch on tour bin und kein Visual Studio zur Hand habe.

Es gibt auch Online Compiler wie IDEone oder .NET Fiddle.

dantes  19.10.2020, 02:20

Na da stehts. Lag ich doch richtig. Danke für die Bestätigung, regex9.

1
Davanius 
Fragesteller
 19.10.2020, 03:01

Danke auf jeden Fall! Das hat mir sehr geholfen. Fällt dir zufällig auch ein guter Compiler fürs Handy ein, den ich offline nutzen kann? Ich habe vorher SoloLearn benutzt, aber da sind die Möglichkeiten auch begrenzt wenn man nicht Premium besitzt. Ich habe aber nichts dagegen, das einmalig zu kaufen.

0
regex9  19.10.2020, 03:06
@Davanius

Ich kenne keine App aus eigener Erfahrung. Eine kurze Recherche gibt mir die C# Shell zurück, die wohl sogar noch mehr kann, als man eigentlich braucht. Für iOS gäbe es Continuous.

1

Ein Enum ist technisch nur eine Zahl. Standardmäßig ist das ein Int (wie in diesem Fall), das kann man aber auch ändern. Der Sinn davon aus, diesen Zahlen einen Namen zu geben und so die Arbeit damit zu vereinfachen, früher hat man dafür einfach Konstanten benutzt. Außerdem kann das Enum noch Bit-Flags und dazu passende Operationen, das geht zwar auch mit normalen Zahlen, mit Enums aber ein bisschen einfacher.

Der einfachste Weg ist also - wie in deinem Code gezeigt - das Casten.
Du kannst aber auch die ToString-Methode mit Format benutzen, dann bekommst Du es aber immer als String raus.

Und der Compiler nimmt bei Enum-Einträgen ohne explizitem Zahlenwert den vorherigen Wert und addiert 1. A310 ist also 201.

Woher ich das weiß:Berufserfahrung

Hilft dir vielleicht das?

https://csharp.net-tutorials.com/de/131/fortgeschrittene-themen/aufzahlungen-enum/

Ich mach mit c# leider wenig. Ist A321 zufällig 103? Normalerweise zählt enum eine Ganzzahl höher ab dem vorherigen Wert. Sicher bin ich mir hier aber nicht!

Woher ich das weiß:Berufserfahrung – Ich programmiere RPAs
Davanius 
Fragesteller
 19.10.2020, 02:14

Danke erstmal! Nein, das hatte ich auch schon gelesen und immernoch Fragezeichen im Kopf. Ich hab die Aufgabenstellung so 1 zu 1 abkopiert, war genauso verwirrt wie du was die Werte betrifft.

0
dantes  19.10.2020, 02:18
@Davanius

Nun Enum verwende ich in VBA hin und wieder um Spalten durch zu nummerieren. Es stimmt schon, dass der einfach immer +1 macht. Damit spart man sich viel Schreibarbeit. Ich hab aber noch nie bei 200 angefangen und bin dann auf 100 runter. Nach meinem Verständnis müsste der nun aber 100 als Basis nehmen und dann A319=101, A320=102, A321=103 setzen. Da c# und VB alles .NET sind, müsste das grundsätzlich beides das selbe sein. Wann brauchst es? Ich wäre morgen wieder am Schreiben und müsste für einen RPA Job sowieso eine Excel aufbrezeln.

0
Davanius 
Fragesteller
 19.10.2020, 02:22
@dantes

Ich werde das auf jeden Fall morgen auch mal am PC ausprobieren, wann ich's brauche.. Du, das hat Zeit. Ne Woche mindestens. Aber würde mich auf jeden Fall freuen noch ein Ergebnis von jemand anderem zu sehen. =) Danke auf jeden Fall! Aber ja, das mit dem +1 macht Sinn, ich muss mir das Ganze nurnoch so schreiben das der Code sinnmacht bzw. mein Tutor sieht dass ichs gerafft habe. =)

1
dantes  19.10.2020, 02:23
@Davanius

Das richtige Ergebnis hat Regex9 schon geschrieben :-)

1