Avatar billede noxiaz Nybegynder
22. december 2006 - 00:55 Der er 8 kommentarer og
1 løsning

String og hashtables

Jeg har scriptet hvor jeg bruger 4 forskellige hashtables og har lavet et script så jeg bare kan skrive "hadd(databasen,key,value)" også adder den til dabasen med den key og value.
Scriptet ser sådan her ud:
public void hadd(string database, string key, string value)
{
    if (database == "nick") { hnick.Add(key, value); }
    if (database == "address") { haddress.Add(key, value); }
    if (database == "ident") { hident.Add(key, value); }
    if (database == "auth") { hauth.Add(key, value); }
}

Kunne så godt tænke mig at vide om det er muligt at kunne gøre dette på en anden måde så som:

public void hadd(string database, string key, string value)
{
    "database".Add(key, value);
}

Hvor databasen bliver valgt ud fra en string :) Er det muligt?
Avatar billede hmortensen Nybegynder
22. december 2006 - 02:27 #1
Du kan smide de 4 hashtables i et fælles hashtable.

Hashtable mainHt = new Hashtable();
mainHt.Add("nick", new Hashtable());
mainHt.Add("address", new Hashtable());
mainHt.Add("ident", new Hashtable());
mainHt.Add("auth", new Hashtable());

public void hadd(string database, string key, string value)
{
  ((Hashtable)mainHt[database]).Add(key, value);
}

Men synes det virker som en sær løsning du er i gang med. Hvorfor ikke blot lave et objekt til at holde alle oplysningerne og så smide hele objektet i en liste.
Avatar billede noxiaz Nybegynder
22. december 2006 - 02:45 #2
Hmm har ikke styr på det med objekter, har brugt ini før til det, så tænkte jeg jeg ville prøve at smide det over i hashtable, men der manglede jeg "section" som så er databasen ved hashtable, men det gav mgi så det lille problem med at man skal skrive navnet for at add.

og det objekt ved slet ikke hvad det er, noget du kunne vise et eks. på?
Avatar billede noxiaz Nybegynder
22. december 2006 - 04:39 #3
når jeg bruger ((Hashtable)mainHt[database]).Add(key, value);, hvordan læser jeg så fra hashtablen? den siger: Object reference not set to an instance of an object.
Avatar billede noxiaz Nybegynder
22. december 2006 - 14:56 #4
Åhh nu ved jeg hvorfor :S Havde glemt at bruge hadd :S haha ^^
Avatar billede md_craig Nybegynder
22. december 2006 - 23:05 #5
public struct HaddObj
{
  public string Nick;
  public string Address;
  public string Ident;
  public string Auth;
}

//Hvis du bruger .NET 2.0 så ville jeg foretrække dic under generics.
Dictionary<string,HaddObj> database = new Dictionary<string,HaddObj>();

public void Hadd( string key, HaddObj hadd )
{
  database.Add( key, hadd );
}

public void UsageTest()
{
  HaddObj o = new HaddObj();
  o.Nick = "Chili";
  o.Address = "Bærvinget 7";
  o.Ident = "Blubber";
  o.Auth = "Admin";

  Hadd( "key", o );
}

Sådan kan du fx benytte "objecter" til det... nu er det så ikke et "rigtigt" object i den forstand, da det jeg har lavet er et struct... det er lidt forskelligt hvad der er bedst...
Avatar billede noxiaz Nybegynder
24. december 2006 - 17:13 #6
md_craig, tak for hjælpen med "objecter". Men er jo lidt ude i samme problem som da jeg startede hvis jeg benytter denne metode, ud fra dette kan jeg ikke se hvordan jeg skal add flere personer, og hvis jeg kan, så kan jeg ikke se hvordan jeg skal kunne finde ud af hvem er hvem :S
Avatar billede noxiaz Nybegynder
24. december 2006 - 17:15 #7
Jeg har der for fået bikset dette sammen:
        public static Hashtable mainHt = new Hashtable();
        public static void hAdd(string database, string key, string value)
        {
            if (mainHt.ContainsKey(database) == false) { mainHt.Add(database, new Hashtable()); }
            Hashtable db = (Hashtable)mainHt[database];
            db.Add(key, value);
        }
Som faktisk virker fuldstændig som jeg gerne vil have :P
Avatar billede noxiaz Nybegynder
24. december 2006 - 17:16 #8
hmortensen, må gerne lige kaste et svar ;) da han nu svarede som dne først på mit spørgsmål.
Avatar billede hmortensen Nybegynder
25. december 2006 - 11:01 #9
Svar.
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

IT-JOB

Lægemiddelstyrelsen

Løsningsarkitekt

Capgemini Danmark A/S

Finance Lead (SAP)

Nextway Software A/S

Software Architect