Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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

Å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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...