Laden...

Gibt es ein Enum mit Double Werten?

Erstellt von dila71 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.060 Views
D
dila71 Themenstarter:in
103 Beiträge seit 2005
vor 4 Jahren
Gibt es ein Enum mit Double Werten?

Hallo,
ich habe im Code (Verursacher nicht greifbar 😉 ) folgende enum.


public enum SValue
    {
        /// <summary>
        /// 0.2
        /// </summary>
        eS02,

        /// <summary>
        /// 0.25
        /// </summary>
        eS025,

        /// <summary>
        /// 0.38
        /// </summary>
        eS038
    }

Natürlich gibt es auch ein Property ValueProperty (≤ Beispielnamen), welches von diesem Typ ist.

Wenn nun


ValueProperty = SValue.eS02; 

dann liefert:


ValueProperty.Get() => 0.2

Ich dachte bisher Double Enums gäbe es nicht.
Google sagt auch nur, geht nicht.
Nach was kann/muss ich googeln, um mich darüber zu informieren.

Meine eigentliche Aufgabe inportiere einen Striing in dieses Property,
natürlich nicht den String eS038, wäre ja zu einfach... (SValue)Enum.Parse(typeof(SValue), "eS038");
nee "0,38" soll es sein.

Danke im Voraus für die Hilfe

T
2.219 Beiträge seit 2008
vor 4 Jahren

Mir wird nicht ganz klar, was du nun vor hast.
Wenn du nur den Double Wert zu dem entsprechendem Enum Wert brauchst, kannst du dies auch einfach mit einer Helper Methode lösen.


public double GetValue(SValue sVal)
{
    switch(sVal)
    {
         case SValue.eS02:
             return 0.2;
         // Hier weitere Fälle Eintragen
    }
}

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 4 Jahren

Meine eigentliche Aufgabe inportiere einen Striing in dieses Property,
natürlich nicht den String eS038, wäre ja zu einfach... (SValue)Enum.Parse(typeof(SValue), "eS038");
nee "0,38" soll es sein.

Ist das eine Schulaufgabe, bei der Du etwas genau so implementieren sollst? Oder was ist der eigentliche Zweck Deines Vorhabens?

D
dila71 Themenstarter:in
103 Beiträge seit 2005
vor 4 Jahren

Danke für Die Antworten.

Hier nochmal zur Erklärung:
Ich habe existierenden Code.
In einer Klasse (Welche eine Excelzeile abbildet) gibt es eben das erwähnte ValueProperty vom Typ SValue.
Der Urheber (nicht verfügbar) scheint damit sicherstellen zu wollen, dass da eben nur die 3 möglichen Werte drin sein können.

Beim Excelexport (bereits fertig und ebenfalls nicht von mir) wird ValueProperty.Get() in ins Excel geschrieben und das ist eben wie bereits gesagt 0.2 wenn ValueProperty mit SValue.eS02 belegt ist.

Meine Aufgabe ist jetzt ein ExcelImport wo dann eben aus den Werten 0.2, 0.25 und 0.38 eben wieder die EnumValues entstehen müssen.

Aus Euren Antworten schließe ich, dass ich wohl irgendwo eine ExtensionKlasse übersehen habe und da das Get() implementiert ist.
Meine ursprüngliche Annahme war, dass man doch irgendwie ein Enum mit Double Werten machen kann und ich es nur nicht kenne bzw. mich zu blöd anstelle.

Nochmals Danke ´

T
2.219 Beiträge seit 2008
vor 4 Jahren

Im einfachsten Fall musst du nur in die Get() Mthode springen.
Ggf. gibt es dort auch eine passende Set() Methode um den Import einfach umzusetzen.
Aber hier must du dich weiter in den Code einarbeiten, wir können dir hier nicht ohne Informationen von dir weiterhelfen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

6.911 Beiträge seit 2009
vor 4 Jahren

Hallo dila71,

Ich dachte bisher Double Enums gäbe es nicht.
Google sagt auch nur, geht nicht.
Nach was kann/muss ich googeln, um mich darüber zu informieren.

Naja, die offizielle Doku?

Zitat von: enum (C# Reference)
Every enumeration type has an underlying type, which can be any
>
. double ist kein "integral numeric type" (siehe dazu auch [FAQ] Double und Float: Fehler beim Vergleich und Rundungsfehler).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

16.807 Beiträge seit 2008
vor 4 Jahren

Meine ursprüngliche Annahme war, dass man doch irgendwie ein Enum mit Double Werten machen kann und ich es nur nicht kenne bzw. mich zu blöd anstelle.

Wie gfoidl bereits referenziert hat: double ist bei Enum nicht.
Ich hab aber schon gesehen, dass für so ein Vorgaben die Mill-Darstellung verwendet wurde; ein übliches Verfahren bei Wert-Darstellungen.
Mill (currency)
Damit lassen sich auch Rundungsfehler vermeiden.