Avatar billede maqhem Nybegynder
01. marts 2010 - 11:23 Der er 8 kommentarer og
1 løsning

Dynamisk object

Nu har jeg været vandt til i Flash at kunne lave en dynamic class, hvor jeg kan tilføje members uden at den giver fejl. Så prøvede jeg i C#, men jeg får en fejl. Dette er, had jeg ønsker:

Object Strings = new Object();

Strings["hilsen"] = "hej hej";

Console.WriteLine(Strings.hilsen);
Avatar billede bvli Praktikant
01. marts 2010 - 12:08 #1
Det kan du ikke på den måde (heldigvis). C# er typesikkert, og giver dig ikke lov til dette uden videre.

Spørgsmålet er så om du virkelig har brug for det?
Avatar billede maqhem Nybegynder
01. marts 2010 - 12:12 #2
Tjah, det ville være rart at kunne. Men løser det bare ved at lave en klasse StringPairs med to members: Indexes og Values.
Avatar billede maqhem Nybegynder
01. marts 2010 - 12:20 #3
public static class StringPairs
{
    private static Stack<String> Indexes = new Stack<String>();
    private static Stack<String> Values = new Stack<String>();

    public static void Set(String Index, String Value)
    {
        Indexes.Push(Index);
        Values.Push(Value);
    }

    public static String Get(String Index)
    {
        for (Int32 i = 0; i < Indexes.Count; i++)
        {
            if (Indexes.ToArray()[i] == Index)
            {
                return Values.ToArray()[i];
            }
        }

        return "";
    }
}
Avatar billede Spotgun Seniormester
01. marts 2010 - 12:43 #4
Hvis det er det du absolut vil, hvorfor så ikke bruge en StringDictionary i stedet for din egen klasse?

Samme funktionalitet, mindre kode og sikkert også bedre performance...
Avatar billede maqhem Nybegynder
01. marts 2010 - 14:51 #5
Jeg endte nu med at bruge min egen funktion, men tak for dni respons. Smid et svar!
Avatar billede maqhem Nybegynder
01. marts 2010 - 14:53 #6
Jeg er vist ikke helt vågen... Jeg har jo allerede smidt et svar!

Hvis du vil have point, så sig til, så skal du få dem.
Avatar billede Spotgun Seniormester
01. marts 2010 - 15:28 #7
Det går nok, behold du bare pointene :)
Avatar billede arne_v Ekspert
02. marts 2010 - 04:10 #8
Nogle blandede kommentarer:

1)  JavaScript er prototype baseret. Det er C# ikke. Derfor har C# ikke den mulighed.

2)  Den StringPairs class er slem. Man skal absolut ikke skrive den slags selv.

3)  StringDictionary er brugbar, men forudsat at vi snakker .NET 2.0 eller nyere (3.5 er current og 4.0 udkommer i næste måned !), så er Dictionary<string,string> bedre.

4)  Hvis man er på et rimeligt sofistikeret niveau i .NET, så kan man f.eks. bruge Castle DynamicProxy til at generere en proxy klasse som både extender en original klasse og Dictionary<string,string>.
Avatar billede janus_007 Nybegynder
02. marts 2010 - 12:37 #9
Enig med Arne...

Det handler om at kode defensivt og det du laver der er et rent debugging helvede.
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