til forskel fra simple typer som int, double osv., så er en string ikke automatisk initialiseret til at starte med. Dvs, at når du skriver
string navn;
så har du oprettet en variabel af typen string, men den peger ikke nogle steder hen. at bruge += operatoren er det samme som at skrive
navn = navn + "hej hej";
Dette kræver en aflæsning af variabel navn, da computeren jo ellers ikke ved hvad navn indeholder og derfor heller ikke kan lave den nye streng som navn skal indeholde. Og fejlen kommer så i det sekund hvor at computeren prøver at aflæse navn, for hvordan var det lige det var... den peger jo ikke nogen steder hen !!
Løsning: initialiser altid dine variaber
string navn = ""; if(bla bla){ foreach(bla bla){ navn = "hej"; .. foreach(bla bla){ navn += "hej hej"; } .. } } MessageBox.Show(navn);
string navn; - flot vi har en string der peger ingen steder hen if(bla bla){ -en if foreach(bla bla){ navn = "hej"; - hov hvad sker der her? .. foreach(bla bla){ navn += "hej hej"; - når han kommer hertil vil navn være .equals hej } .. } } MessageBox.Show(navn); ¨ Problemet er ikke +=, men at der er en vej igennemkoden hvor navn ikke bliver initialiseret.
Jeg håber vi taler forbi hinanden det jeg siger er:
VS kan se at der er en mulighed, læs (kan ske, måske, i nogle tilfælde, ikke nødvendigvis altid)
static void Main(string[] args) { string test; string navn; test = Console.ReadLine(); if(test.Equals("bla")) { navn = "hej";
navn += "hej hej"; } Console.WriteLine(navn); }
vil vs ikke være med til, fordi den kan se at navn kan blive ref. til uden at der er kommet noget i den. men hvis vi laver en s/string navn;/string navn = ""; så går det godt nok.
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.