Avatar billede anri Novice
24. april 2007 - 12:15 Der er 9 kommentarer og
1 løsning

Hent Enum via Index

Jeg har en system Enum som jeg vil tilgå via et index nummer.

Eksempel System.Drawing.Color[5] skulle gerne give mig farve nummer 5 (ne 6 må det jo være) i farvelisten, men sådan kan man blot ikke gøre.

Kan det gøres?
Avatar billede hmortensen Nybegynder
24. april 2007 - 12:53 #1
Således du mener?

private Color GetColorFromIndex(int index)
{
  return (Color)typeof(Color).GetProperties()[index].GetValue(null, null);
}
Avatar billede arne_v Ekspert
24. april 2007 - 14:23 #2
System.Drawing.Color er ikke en enum !
Avatar billede arne_v Ekspert
24. april 2007 - 14:28 #3
hvis det var en enum var her et par alternativer til hmortensens approach:

using System;

namespace E
{
    public enum MyColor { RED, GREEN, BLUE, YELLOW, BLACk, WHITE };
    public class MainClass
    {
        public static void Main(string[] args)
        {
            MyColor c1 = ((MyColor[])Enum.GetValues(typeof(MyColor)))[3];
            MyColor c2 = (MyColor)3;
            Console.WriteLine(c1 + " " + c2);
        }
    }
}
Avatar billede hmortensen Nybegynder
24. april 2007 - 15:15 #4
Ja det er en struct.
Avatar billede anri Novice
24. april 2007 - 16:11 #5
Men virker hmortensens forslag stadig på en struct?
Avatar billede hmortensen Nybegynder
24. april 2007 - 16:35 #6
Det virker netop på en struct, og IKKE på en enum. Regnede med at det var Color du skulle bruge det for, og at det ikke blot var et eksempel.
Avatar billede anri Novice
25. april 2007 - 08:02 #7
Color var blot et (dårligt) eksempel. Det er egentlig System.Drawing.Drawing2D.HatchStyle jeg skulle bruge, og det lugter lidt af en enum.

Derfor kunne jeg bruge Arnes svar, men det var jo hmortensen der faktisk svarede på det, jeg spurgte om.
Avatar billede arne_v Ekspert
28. april 2007 - 05:21 #8
prøv lige:

using System;
using System.Reflection;
using System.Drawing;

namespace E
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            foreach(PropertyInfo pi in typeof(Color).GetProperties())
            {
                Console.WriteLine(pi.Name + " " + (Color)pi.GetValue(null, null));
            }
        }
    }
}
Avatar billede anri Novice
05. december 2007 - 10:11 #9
Ups..  Denne har ligget åben alt for længe..  Jeg mener jeg brugte arnes forslag, så kan du ikke lægge et svar, så vi kan lukke?
Avatar billede arne_v Ekspert
05. december 2007 - 15:17 #10
ok
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