10. august 2006 - 09:38Der er
12 kommentarer og 3 løsninger
Hjælp til noob klasse
Hejsa og godmorgen eksperter :) Har nu endelig sat mig for at jeg vil lære alt der her klasse sjov, for mine koder bliver tit uendelig lange fordi jeg ikke genbruger noget som helst.
Har lavet dette indtil videre:
class person { String P_navn; int P_alder; int P_spillernr;
public person(String Navn, int Alder, int Spillernr) { P_alder = Alder; P_navn = Navn; P_spillernr = Spillernr; }
public String navn { get { return P_navn; } set { P_navn = value; } }
public int alder { get { return P_alder; } set { P_alder = value; } }
public int spillernr { get { return P_spillernr; } set { P_spillernr = value; } } }
class hold { person[] holdspillere = new person[5];
public void addplayer(person teammate) { holdspillere[0] = teammate; }
public void udskriv() { for (int i = 0; i < holdspillere.Length; i++) { Console.WriteLine("Navn: {0}, Alder: {1}, Spillernr: {2}", holdspillere[i].navn,holdspillere[i].alder.ToString(), holdspillere[i].spillernr.ToString()); } } }
static void Main(string[] args) { person person1 = new person("Hans Erik", 50, 1); person person2 = new person("Knud Madsen", 43, 5); person person3 = new person("Jesper Poulsen", 45, 11); person person4 = new person("Emanuel Jarxz", 51, 15); person person5 = new person("Jens Otto", 47, 22); hold hold1 = new hold(); hold1.addplayer(person1); hold1.addplayer(person2); hold1.addplayer(person3); hold1.addplayer(person4); hold1.addplayer(person5); hold1.udskriv(); Console.ReadKey(); }
Nu vil jeg jo gerne bare vide: 1: er det den "rigtige" måde at bruge klasser på? 2: Hvorfor virker overstående ikke? :P - den kommer med "Object reference not set to an instance of an object" i min udskriv funktion
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
hmm.. det var jo nok fordi jeg tilføjede dem alle sammen til [0] :P hvordan tilføjer jeg dem til den næste plads? skal jeg se hvor mange der ligger i forvejen og lægge den på næste?
Hej holdspillere.Length vil returnerer 5 da det er det du har defineret Arrayen til, men du kunne sætte en private variabel som du lægger en til hver gang. public void addplayer(person teammate) { holdspillere[index++] = teammate;
Undere mig lidt over de ikke har lavet det sådan man bare definerer et array, uden nogen specifik størrelse, og så udvider det sig selv når man lægger ting i.
Men nu virker programmet da.
Men er det den "rigtige" måde at lave klasser på, eller har I nogle gode tips og triks?
jeg er voldsom god til klasseprogrammering, så jeg har ikke så mange ideer, men der findes en arraylist der selv udvider sig den hedder Arraylist, den ligger i namespace System.Collection, der er der en add function
public void addplayers(person teammate1, person teammate2, person teammate3, person teammate4, person teammate5) { holdspillere.Add(teammate1); holdspillere.Add(teammate2); holdspillere.Add(teammate3); holdspillere.Add(teammate4); holdspillere.Add(teammate5); }
public void udskriv() { Console.WriteLine("Hold: {0}\n", P_holdnavn); for (int i = 0; i < holdspillere.Count; i++) { Console.WriteLine("Navn: {0}, Alder: {1}, Spillernr: {2}", holdspillere[i].navn, holdspillere[i].alder.ToString(), holdspillere[i].spillernr.ToString()); } }
Men den kommer med fejl nu i min udskriv funktion og siger: 'object' does not contain a deffinition for 'navn' og 'alder' og 'spillernr'
Skal jeg lave en cast et sted så den ved det er typen person?
svar - en generisk liste er ny feature i .net 2.0.
Gør at din liste bliver type safe - dvs hvis du laver den person liste, så kan du kun proppe personer i (eller får du fejl), og du er (som buzzzz siger) fri for at typecaste.
Meget nemmere at arbejde med end f.eks. den gamle ArrayList.
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.