Avatar billede nielsbrinch Nybegynder
20. maj 2004 - 16:20 Der er 12 kommentarer og
1 løsning

Navnesituation med Enum og Property

Jeg har følgende klasse, som jeg ikke kan se noget logisk problem med, men compileren vil ikke acceptere det.


private Level level;

public User(Level level)
{
    this.username = username;
    this.password = password;
    this.email = email;
    this.quarantine = quarantine;
    this.level = level;
    this.points = points;
}

public enum Level
{
    Bruger,
    Administrator
}

public Level Level
{
    get
    {
        return level;
    }
    set
    {
        level = value;
    }
}

Jeg er godt klar over der er navnesammenfald, men enum'en er på klassen og propertyen er på instansen af klassen, så der burde ikke være noget logisk problem med det. Eller er der?
Avatar billede nielsbrinch Nybegynder
20. maj 2004 - 16:21 #1
hov, de ekstra assignments i konstruktøren skal selvfølgelig ikke være der :)
Avatar billede burningice Nybegynder
20. maj 2004 - 16:24 #2
hvad brokker compileren sig over? for nej, det burde virke
Avatar billede nielsbrinch Nybegynder
20. maj 2004 - 16:41 #3
Æhh, nu har jeg lige glemt den helt nøjagtige ordlyd, men det er noget i retningen af: "Level er allerede i brug"
Avatar billede nielsbrinch Nybegynder
20. maj 2004 - 16:43 #4
The class 'DotNyt.User' already contains a definition for 'Level'
Avatar billede arne_v Ekspert
20. maj 2004 - 17:01 #5
Det kan du ikke i C#.

Du får også fejl på:

using System;

class MainClass
{
    public enum X { };
    private int X;
    public static void Main(string[] args)
    {
    }
}
Avatar billede nielsbrinch Nybegynder
20. maj 2004 - 17:04 #6
Jeg er for længst kommet frem til at jeg ikke kan. Det fortæller compileren mig jo. Jeg leder bare efter om der mon er en logisk grund til det.
Avatar billede arne_v Ekspert
20. maj 2004 - 17:05 #7
Fra C# spec:

The members of a class are divided into the following categories:
• Constants, which represent constant values associated with that class (§17.3).
• Fields, which are the variables of that class (§17.4).
• Methods, which implement the computations and actions that can be performed by that class (§17.5).
• Properties, which define named characteristics and the actions associated with reading and writing those
characteristics (§17.6).
• Events, which define notifications that can be generated by that class (§17.7).
• Indexers, which permit instances of that class to be indexed in the same way as arrays (§17.8).
• Operators, which define the expression operators that can be applied to instances of that class (§17.9).
• Instance constructors, which implement the actions required to initialize instances of that class (§17.10)
• Destructors, which implement the actions to be performed before instances of that class are permanently
discarded (§17.12).
• Static constructors, which implement the actions required to initialize that class itself (§17.11).
• Types, which represent the types that are local to that class (§16.5).
Avatar billede arne_v Ekspert
20. maj 2004 - 17:05 #8
Types er nævnt helt på linie med Fields og Properties.
Avatar billede arne_v Ekspert
24. maj 2004 - 00:09 #9
Det er nok det nærmeste man kan komme en forklaring medmindre en af C#
ide mændene hos Microsoft har udtalt sig om emnet.
Avatar billede burningice Nybegynder
24. maj 2004 - 14:39 #10
hvad så hvis man definerer sin Enum UDEN for klassen... så burde den vel gå an?
Avatar billede arne_v Ekspert
24. maj 2004 - 14:55 #11
Ja - det skulle jeg mene
Avatar billede nielsbrinch Nybegynder
24. maj 2004 - 16:35 #12
Ja det er klart. Nogen der vil have pts. så lukker jeg spørgsmålet igen. Tak fordi I gad være med at snakke om noget der egentligt er så ligegyldigt :-)
Avatar billede arne_v Ekspert
24. maj 2004 - 16:49 #13
jeg siger sjældent nej til pts
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester