GeirGrusom Skrevet 24. oktober 2008 Del Skrevet 24. oktober 2008 Hehe Det går fint det som sagt, det er bare å prøve. FlagsAttribute er bare for enkelhetens skyld. I et 8-bit tall så er alle bitene sånn: 0x01(1), 0x02(2),0x04(4), 0x08(8), 0x10(16), 0x20(32), 0x40(64) og 0x80(128) Og som kjent kan flere bit være satt av gangen, for eksempel 0x1 og 0x2 0x1(0001) | 0x2(0010) = 0x3(0011) 0x3(0011) & 0x1(0001) = 0x1(0001) 0x3(0011) & 0x4(0100) = 0x0(0000) Om det er brukt Flags attributtet på enumen eller ikke endrer ikke disse reglene. Som sagt så er det eneste Flags gjør, å automatisk nummerere feltene etter denne metoden dersom ingenting annen blir sagt, men uten Flags så teller den bare oppover istedet. Så jeg kunne skrevet [Flags] public enum Direction { North, South, East, West } som ville gitt akkurat samme resultatet. Lenke til kommentar
Svish Skrevet 11. november 2008 Del Skrevet 11. november 2008 Hm, nå har jeg prøvd... og det ser da virkelig ikke ut til at det du sier stemmer... Har følgende program: class Program { static void Main(string[] args) { foreach(Color c in Enum.GetValues(typeof(Color))) { Console.WriteLine("{0,3} {1}", (int) c, c); } } } Hvis jeg nå setter denne Color enumen til det følgende så får jeg det som jeg forventer: [Flags] enum Color { Black = 0, Red = 1, Green = 2, Blue = 4, Cyan = Green | Blue, Magenta = Red | Blue, Yellow = Red | Green, White = Red | Green | Blue } 0 Black 1 Red 2 Green 3 Yellow 4 Blue 5 Magenta 6 Cyan 7 White Forsøkte så å fjerne tallene, som du sier kan gjøres, men da fikk jeg følgende: [Flags] enum Color { Black, Red, Green, Blue, Cyan = Green | Blue, Magenta = Red | Blue, Yellow = Red | Green, White = Red | Green | Blue } 0 Black 1 Red 2 Green 3 White 3 White 3 White 3 White 3 White Tenkte det kanskje var på grunn av de siste kombinasjonsgreiene, så prøvde å fjerne de: [Flags] enum Color { Black, Red, Green, Blue } 0 Black 1 Red 2 Green 3 Blue men det ga jo heller ikke det ønskede resultatet... kunne du forklare? noe jeg har gjort feil eller glemt eller sånn? eller har jeg bare misforstått noe? Lenke til kommentar
GeirGrusom Skrevet 11. november 2008 Del Skrevet 11. november 2008 Når jeg nå leser dokumentasjonen, ser det ut til at du har rett, den sier ingenting om det, så du må fortsatt definere verdiene selv. Det den derimot gjør, er at ToString funksjonen kan klare å finne ut om det er en blanding av flere verdier, så alt i alt er egentlig FlagsAttribute temmelig ubrukelig utenfor reflection. Lenke til kommentar
WhiteFire Skrevet 11. november 2008 Del Skrevet 11. november 2008 Når skal vi få prøve spillet ditt da? Lenke til kommentar
Velena Skrevet 11. november 2008 Forfatter Del Skrevet 11. november 2008 Har desverre ikke kommet så mye lengre. Det eneste er at jeg fullførte ShortestPath funksjonen som forsåvidt kan brukes i dette prosjektet. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå