Autor Beitrag
markusk
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 11.10.20 17:36 
Hallo,

habe bisher hauptsächlich in Java programmiert und will mich nun in C# einarbeiten.

Ich habe in Java bei Enums oft Konstrukte wie folgendes verwendet:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public enum Month {
    JAN(1, "January"),
    FEB(2, "February");

    private final int id;
    private final String name;
    
    public int getId() {
       return id;
    }

    public String getName() {
       return name;
    } 

    private Month(int id, String name) {
       this.id=id;
       this.name=name;
    }
}


Geht das in C# auch irgendwie? Ausprobiert hab ich's syntaktisch auf mehrere Arten, aber anscheinend muß man das in C# irgendwie anders schreiben oder es geht schlicht und einfach nicht.

lg, Markus
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 11.10.20 18:50 
Nö so funktioniert enum in .Net nicht. Um irgendwas an einem Enum zu ergänzen würde man Extensionmethods schreiben.

Wobei bezogen auf dein Beispiel den Wert(id) hat man eh und irgendeinen Namen abweichen von der Bezeichnung des Wertes würde man wohl über ein DescriptionAttribute am Enum Wert lösen und eine Extensionmethod um darauf bequem zuzugreifen.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: So 11.10.20 23:13 
In C# ist ein Enum nur eine Zahl, standardmäßig ein Int32.
Das Enum definiert also nur eine Sammlung von Namen für definierte Werte.

Wenn Du sowas brauchst, kannst Du auf normale Klassen zurückgreifen und statische Properties mit passenden instanzen anbieten.

Aber ganz ehrlich: Was soll das bringen? Mir fällt kein Beispiel ein, das man nicht besser lösen kann.

Und dein Beispiel:
Dafür gibt's in .NET das DateTime-Struct, damit kannst Du so gut wie alles machen und musst dir keine Gedanken um korrekt übersetzte Texte machen.