Hejsan alla ni kunniga därute Du måste initiera kund objekt och lägga dom i varje post i din Array. Det du har gjort är enbart talat om hur stor arrayen ska vara. Der funkar precis som du sade! tackar för det! Main körs först, men... Du har helt rätt i hur jag gjort så nu ändrade jag och det funkade. Man tackar nu förstår jag varför man skriver viss kod i Main blocket och viss i class blocket! tack Andreas,newbie fråga som ni säkert kan
Jag har en grej som jag inte fattar i C# nämligen vill tillverka ett objekt som skall representera en kund med telefonnummer, personummer och namn och för varje gång jag sedan trycker på en viss button knapp så skall det skapas en ny kund med olika värden. Så jag gjorde helt enkelt så att jag under class skapade ett kund objekt:
public class kund{
public string namn;
public int personnr;
public int telnr;
}
sedan skapade jag även i Class en array av 10 kunder (objekt)
kund[] kundArray = new kund[10];
nu när jag klickar på min button så vill jag ju sätta in värdena:
private void button_Click(object sender, System.EventArgs e) {
kundArray[0].namn ="peter";
}
MEN hur jag än bär mig åt får jag bara följande fellmeddelande och markering av kundArray[0].namn ="peter"; "An unhandled exception of type 'System.NullReferenceException' occured, Additional information: Object reference not set to an instance of an object
Buuuuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhääääääääääää!!! var kan jag hitta info om detta? river snart av mig det lilla hår jag har kvar!
hoppas ni förstår vad jag menar
tack på förhand,
Andreas WSv: newbie fråga som ni säkert kan
Gör något liknande detta:
<code>
Kund[] kunder = new Kund[10];
for (int i = 0; i < kunder.Length; i++)
{
Kund[i] = new Kund();
}
</code>
/Fredrik Normén NSQAURED2
http://normen.mine.nu/myblogSv: Wooohooo Tackar så jätte mycket
det funkar dock bara när jag lägger for loopen i click händelsen för button men inte när jag lägger for loopen i Main(). Trodde allting i Main() kördes först men har nog fattat fel, får läsa på igen :) tack för tipset igen.
/AndreasSv: Wooohooo Tackar så jätte mycket
Om jag förstår dig rätt så deklarerar du KundArray i Main på följande vis
<code>
static void Main()
{
Kund[] kunder = new Kund[10];
for (int i = 0; i < kunder.Length; i++)
{
Kund[i] = new Kund();
}
}
</code>
Vad som händer då är att kunder bara blir tillgängligt under sitt kodblock (dvs mellan { och }).
För att ta ett exempel:
<code>
void Funktion1()
{
int x = 10;
}
void Funktion2()
{
x = 20;
}
</code>
Detta fungerar inte eftersom Funktion2 inte kommer åt x. x är bara tillgängligt under sitt kodblock i Funktion1. Du kan däremot deklarera en ny verabel i Funktion2.
Lösning på detta? Jo, deklarera x (eller din kundArray) utanför funktionen. Då kommer alla dina rutiner komma åt den. Så här:
<code>
class minKlass
{
Kund[] kunder = new Kund[10];
static void Main()
{
for (int i = 0; i < kunder.Length; i++)
{
Kund[i] = new Kund();
}
}
void minFunktion()
{
Kund[5].Namn = "Jimmy";
}
}
</code>Sv: Wooohooo Tackar så jätte mycket
Sv: Wooohooo Tackar så jätte mycket
Kan tillägga att detta är vad som kallas för <b>scrope</b> (räckvid) när du läser dokumentation på engelska. Man talar om vilket scope saker och ting har beroende på var de deklareras och även på grund av hur de deklareras.