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!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme