beccy1980 Skrevet 13. august 2005 Del Skrevet 13. august 2005 Holder på å lære meg C# programmering men står litt fast akkurat nå. Skal lage en navnedatabase (er bare for å lære) men står fast på dette med objecter. Jeg har laget en klasse som heter Navn, denne skal jeg fylle i med informasjon (Fornavn og etternavn) men tenkte jeg skulla lage flere instanser(???) av denne klassen. Dette er hva jeg kjører fra Form1 klassen Navn[] myName = Navn.getAllNames(); Meningen er da at jeg skal kunne printe ut alle Navn objectene som blir returnert. Problemet er at det er noe galt i Navn klassen min. Slik ser den ut : using System; namespace Personer { /// <summary> /// Summary description for Navn. /// </summary> public class Navn { private string firstName = null; private string lastName = null; public Navn() { // // TODO: Add constructor logic here // } public string FirstName { get { return this.firstName; } set { this.firstName = value; } } public string LastName { get { return this.lastName; } set { this.lastName = value; } } public static Navn[] getAllNames() { Navn[] myNames = new Navn[1]; myNames[0].FirstName = "Kåre"; myNames[0].LastName = "Knallhard"; myNames[1].FirstName = "Lisa"; myNames[1].LastName = "Myk"; return myNames; } } } Feilen jeg får er da : An unhandled exception of type 'System.NullReferenceException' occurred in navn.exe Additional information: Object reference not set to an instance of an object. Noen som har peiling på hva jeg gjør feil ? Takker Lenke til kommentar
GeirGrusom Skrevet 13. august 2005 Del Skrevet 13. august 2005 en 'static' funksjon er en som ikke egentlig har så mye med klassen den er skrevet i å gjøre, den kan bli kalt uansett om objektet er instanciated eller ikke, den kan ikke lese data fra 'this' men har tilgang til protected og private variabler i klassen. For å lage et objekt, gjør du slik: Navn my_var = new Navn(); // Lager en ny instance av objektet Navn my_var.firstName = "Helly"; // Setter variablen firstName my_var.lastName = "Hansen"; // Setter variablen lastName Du kan ikke gjøre slik: Navn.firstName = "Brunar"; // FEIL siden dette bare er en referanse til typen Person.Navn Men du kan gjøre slik: string my_var[] = Navn.Navn; fordi Navn.Navn er deklarert static Lenke til kommentar
beccy1980 Skrevet 13. august 2005 Forfatter Del Skrevet 13. august 2005 hmmm.. jeg forstår ikke helt hva du mener, eller kanskje ikke du forstår hva jeg prøver å gjøre Jeg har lyst å lage flere Navn objecter og fylle ut forskjellige navn til de forskjellige objectene. Jeg kan enkelt lage ETT object ved å skrive Navn myName = new Name(); myName.firstName = "Kåre"; myName.lastName = "Knallhard"; Men jeg vil gjøre mye mer en som så, jeg vil kunne lage mange Navn objecter for så å tilordne firstName og lastName til de. Ved å lage ett array av objectet Navn slik Navn[] myNameArray = new Navn[2]; Nå lagetet jeg 3 instanser av objectet Navn Nå vil jeg sette navnene. myNameArray[0].firstName = "Lisa"; myNameArray[0].lastName = "Brunei"; myNameArray[1].firstName = "Torgeir"; myNameArray[1].lastName = "Brunei"; myNameArray[2].firstName = "Pompel"; myNameArray[2].lastName = "Brunei"; Tusen takk for at du prøver å hjelpe meg .. Lenke til kommentar
GeirGrusom Skrevet 13. august 2005 Del Skrevet 13. august 2005 Åja, du lager ikke instance av dem; det gjøres slik: Navn[] myNameArray = new Navn[3]; for(int x = 0; x < myNameArray.Length;x++) myNameArray[x] = new Navn(); // Lag en instance myNameArray[0].firstName = "Lisa"; myNameArray[0].lastName = "Brunei"; myNameArray[1].firstName = "Torgeir"; myNameArray[1].lastName = "Brunei"; myNameArray[2].firstName = "Pompel"; myNameArray[2].lastName = "Brunei"; da skal det fungere. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå