Luokkaoliot
Luokan olio voidaan luoda seuraavalla syntaksilla:
index.cs
1className variableName = new className();
Luokan kenttään pääsee käsiksi pisteoperaattorilla (.
):
index.cs
1variableName.fieldName
Esimerkiksi:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player p1= new Player(); p1.username = "Don"; Console.WriteLine(p1.username); } }
Lauseke new Player();
käytetään uuden olion luomiseen, kun taas Player p1
luo muuttujan uuden olion tallentamista varten. Pelkkä Player p1;
luo vain tyhjän muuttujan ilman siihen liitettyä oliota, joten sinun täytyy luoda uusi olio ja tallentaa se muuttujaan: Player p1 = new Player();
.
Jos siis luot taulukon, jonka koko on 10
käyttäen Player
-luokkaa, se ei luo kymmentä oliota, vaan se luo tyhjän taulukon, jolla on kapasiteetti tallentaa 10 Player-oliota. Tämä voidaan ymmärtää seuraavan esimerkin avulla:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player[] players = new Player[10]; players[0].username = "Don"; // Error on this line Console.WriteLine(players[0].username); } }
Virheilmoitus sanoo "Object reference not set to an instance of an object", mikä tarkoittaa yksinkertaisesti sitä, että yrität käyttää tietoa oliosta, jota ei ole olemassa – indeksissä 0
ei ole oliota, johon viitata.
Tämä voidaan korjata luomalla olio manuaalisesti indeksiin 0
:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player[] players = new Player[10]; players[0] = new Player(); players[0].username = "Don"; Console.WriteLine(players[0].username); } }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain why creating an array of objects doesn't automatically create the objects themselves?
How do I initialize all elements in an array of objects?
What does "Object reference not set to an instance of an object" mean in simple terms?
Awesome!
Completion rate improved to 2.04
Luokkaoliot
Pyyhkäise näyttääksesi valikon
Luokan olio voidaan luoda seuraavalla syntaksilla:
index.cs
1className variableName = new className();
Luokan kenttään pääsee käsiksi pisteoperaattorilla (.
):
index.cs
1variableName.fieldName
Esimerkiksi:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player p1= new Player(); p1.username = "Don"; Console.WriteLine(p1.username); } }
Lauseke new Player();
käytetään uuden olion luomiseen, kun taas Player p1
luo muuttujan uuden olion tallentamista varten. Pelkkä Player p1;
luo vain tyhjän muuttujan ilman siihen liitettyä oliota, joten sinun täytyy luoda uusi olio ja tallentaa se muuttujaan: Player p1 = new Player();
.
Jos siis luot taulukon, jonka koko on 10
käyttäen Player
-luokkaa, se ei luo kymmentä oliota, vaan se luo tyhjän taulukon, jolla on kapasiteetti tallentaa 10 Player-oliota. Tämä voidaan ymmärtää seuraavan esimerkin avulla:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player[] players = new Player[10]; players[0].username = "Don"; // Error on this line Console.WriteLine(players[0].username); } }
Virheilmoitus sanoo "Object reference not set to an instance of an object", mikä tarkoittaa yksinkertaisesti sitä, että yrität käyttää tietoa oliosta, jota ei ole olemassa – indeksissä 0
ei ole oliota, johon viitata.
Tämä voidaan korjata luomalla olio manuaalisesti indeksiin 0
:
index.cs
12345678910111213141516using System; class Player { public string username; } public class ConsoleApp { public static void Main(string[] args) { Player[] players = new Player[10]; players[0] = new Player(); players[0].username = "Don"; Console.WriteLine(players[0].username); } }
Kiitos palautteestasi!