Avatar billede Slettet bruger
07. november 2007 - 20:08 Der er 35 kommentarer og
1 løsning

Foreach igen

Hej eksperter!

Jeg fandt ud af at bruge foreach her: http://www.eksperten.dk/spm/795696

Men nu har jeg brug for at kunne oprette elementer med navne i en List.
Altså noget i denne stil (ikke rigtig kode):
MyList.Add(Something = new MyClass());

Dette kan i stedet gøres ved at oprette Something uden for MyList, og derefter tilføje en refference:
MyClass Something = new MyClass();
MyList.Add(Something);

Men er det ikke muligt at gøre det første ( noget i stil med MyList.Add(Something = new MyClass()) )?
Avatar billede arne_v Ekspert
07. november 2007 - 20:15 #1
"elementer med navne i en List" ?

Hasttable eller Dictionary<> ?
Avatar billede flyver23 Nybegynder
07. november 2007 - 20:17 #2
Umiddelbart kan du gøre det med
MyList.Add(new MyClass())
Avatar billede bitmatic Nybegynder
07. november 2007 - 20:17 #3
Jo da...

Prøv med: MyList.Add(new MyClass())
Avatar billede arne_v Ekspert
07. november 2007 - 20:28 #4
Dictionary<string,MyClass> d = new Dictionary<string,MyClass>();
d.Add("Something", new MyClass());
Avatar billede Slettet bruger
07. november 2007 - 21:09 #5
Hvad er hashtables og dictionaries? :/
Avatar billede Syska Mester
07. november 2007 - 21:22 #6
Dictionary<> er en Generic (dvs type safe) mens Hashtable er ... ja, objecter du smider i .... og du skal så selv caste dem når du vil have dem ud ...

// ouT
Avatar billede arne_v Ekspert
07. november 2007 - 21:22 #7
I en ArrayList eller List<> gemmer du paa en bestemt position.

I en Hashtable eller Dictionary<> gemmer du under et navn.
Avatar billede arne_v Ekspert
07. november 2007 - 21:23 #8
Som det fremgaar har jeg laest dit spm. lidt anderledes end de andre.
Avatar billede Slettet bruger
07. november 2007 - 21:25 #9
Jeg bruger List<> (alså Dictionary<>?).
Avatar billede Slettet bruger
07. november 2007 - 21:25 #10
Ups, ja, det burde jeg selvfølgelig have skrevet... Undskyld mig :)
Avatar billede Slettet bruger
08. november 2007 - 16:22 #11
Men hvordan kan jeg så gøre noget lignende
MyList.Add(Something = new MyClass());
?
Avatar billede arne_v Ekspert
08. november 2007 - 16:38 #12
Hvad er du vil opnaa ?

Med en Dictionary kan du slaa op paa navn.

MyList.Add(Something = new MyClass());

boer faktisk vaere legal synax og svare til:

Something = new MyClass();
MyList.Add(Something);

men det goer noget helt andet end Dictionary.
Avatar billede Slettet bruger
08. november 2007 - 18:07 #13
Kan du så ikke forklare brugen af Dictionary?
Avatar billede Slettet bruger
08. november 2007 - 18:09 #14
Forresten, off-topic, hvorfor skriver du uden danske bogstaver, arne_v?
Avatar billede Slettet bruger
08. november 2007 - 18:11 #15
Jeg skal kunne refferere til hvert element og samtidig bruge foreach.
Avatar billede arne_v Ekspert
08. november 2007 - 18:14 #16
Dictionary<string,MyClass> d = new Dictionary<string,MyClass>();

saa kan man gemme en MyClass under navnet "Something":

d.Add("Something", new MyClass());

og hente den igen med:

d["Something"]
Avatar billede arne_v Ekspert
08. november 2007 - 18:17 #17
Jeg har et US tastatur.

Og jeg bliver skoer hvis tegnet paa en tast ikke matcher det den goer.
Avatar billede arne_v Ekspert
08. november 2007 - 18:19 #18
List<> ligger lige til en foreach, men du kan ogsaa lave en foreach paa

d.Keys

i Dictionary eksemplet.

men jeg har stadig ikke helt forstaaet hvad du vil.
Avatar billede Slettet bruger
08. november 2007 - 18:44 #19
Off-topic: Okay :P
Jeg har en samling hændelser, der hver har en hvis chance for at forekomme (int, eks.: 3). Scriptet skal løbe alle hændelserne (lad os sige af klassen MyClass) igennem, og tilføje hver enkelt instans' chance for at forekomme til en variabel (lad os sige SomeIntVar), hvorefter den trækker et tilfældigt tal mellem 1 og SomeIntVar. Herudfra finder scriptet så ud af, hvilken hændelse, der skal ske.
Avatar billede Slettet bruger
08. november 2007 - 18:46 #20
Kan man forresten hente et stykke kode fra en tekstfil ind som scripts under kompilering af programmet? Det kan gøre en del af mit arbejde enklere.
Avatar billede arne_v Ekspert
08. november 2007 - 19:09 #21
Saa ville jeg bruge List<>.

List<MyClasss> lst = new List<MyClasss>();
lst.add(new MyClass());
lst.add(new MyClass());
lst.add(new MyClass());
MyClass udtrukket = lst[rng.next(l.Count)];
Avatar billede arne_v Ekspert
08. november 2007 - 19:10 #22
Du kan godt compile baade C# kode og JavaScript kode dynamisk under koersel af dit program
og eksekvere den.
Avatar billede Slettet bruger
11. november 2007 - 16:20 #23
Min pc er nede for 117'ne gang, så jeg svarer ikke foreløbig... Sorry. NOTETOALLDONTBUYANACERPC.
Avatar billede Slettet bruger
18. november 2007 - 17:44 #24
Så. Jeg har fået min pc op at køre og VC# installeret nu. Jeg skriver tilbage, når jeg har læst tråden igennem...
Avatar billede Slettet bruger
18. november 2007 - 17:52 #25
Du kan godt compile baade C# kode og JavaScript kode dynamisk under koersel af dit program
og eksekvere den.
> Det er ikke det, jeg mener. Jeg vil inkludere et stykke kode fra en ekstern fil, som når du med PHP skriver 'include "string"'.

Saa ville jeg bruge List<>.
> Men hvordan kan jeg så reffere til det enkelte objekt med navn?
Avatar billede arne_v Ekspert
18. november 2007 - 22:20 #26
Hvis du vil hente objeket med navn skal du bruge Dictionary<>.
Avatar billede arne_v Ekspert
18. november 2007 - 22:20 #27
PHP er fortolket - C# er compilet
Avatar billede Slettet bruger
18. november 2007 - 22:26 #28
Hvis du vil hente objeket med navn skal du bruge Dictionary<>.
> Godt så, tak.

PHP er fortolket - C# er compilet
> Hvad har det med sagen at gøre?
Avatar billede arne_v Ekspert
18. november 2007 - 22:43 #29
At du nemt kan include en fil i PHP og fortolke den, men at du i C# er nødt til at compile det. Der er måske nogle muligheder i at kalde JavaScript fra C#.
Avatar billede Slettet bruger
18. november 2007 - 22:47 #30
Så det er ikke muligt at "indsætte" andre filers indhold i koden inden kompilering i C#?
Avatar billede arne_v Ekspert
18. november 2007 - 22:51 #31
Nej.

Men det er der heller ingen grund til.

Man kan jo godt bruge koden selvom den ikke er inkluderet i samme assembly.
Avatar billede Slettet bruger
02. december 2007 - 21:27 #32
"Man kan jo godt bruge koden selvom den ikke er inkluderet i samme assembly."

>> Hvad er et assembly, og hvordan kan det erstatte muligheden for at indsætte kode fra andre filer? Grunden til at jeg vil gøre det er, at det nogle steder kan gøre det mere overskueligt.
Avatar billede arne_v Ekspert
03. december 2007 - 15:19 #33
assembly er et faelles navn for dll og exe

hvis du putter noget funktionalitet i en dll saa kan den bruges af alle dine sider
Avatar billede Slettet bruger
03. december 2007 - 17:52 #34
Hmm, okay. Det forklarer de utal af dll'er, der ligger overalt i programmapperne til moderne computerspil og store programmer!
Nå. Du har vist fået svaret på mit oprindelige spørgsmål, så jeg lukker her :o)
...antaget at du smider et svar!
Avatar billede arne_v Ekspert
03. december 2007 - 18:15 #35
svar
Avatar billede Slettet bruger
03. december 2007 - 18:26 #36
point x)
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