Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Luokkaoliot | Johdatus Olio-Ohjelmointiin (OOP)
C# Perusteiden Jälkeen

bookLuokkaoliot

Luokan olio voidaan luoda seuraavalla syntaksilla:

index.cs

index.cs

copy
1
className variableName = new className();

Luokan kenttään pääsee käsiksi pisteoperaattorilla (.):

index.cs

index.cs

copy
1
variableName.fieldName

Esimerkiksi:

index.cs

index.cs

copy
12345678910111213141516
using 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

index.cs

copy
12345678910111213141516
using 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

index.cs

copy
12345678910111213141516
using 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); } }
question mark

Mikä on oikea syntaksi uuden olion luomiseksi luokasta nimeltä Car?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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

bookLuokkaoliot

Pyyhkäise näyttääksesi valikon

Luokan olio voidaan luoda seuraavalla syntaksilla:

index.cs

index.cs

copy
1
className variableName = new className();

Luokan kenttään pääsee käsiksi pisteoperaattorilla (.):

index.cs

index.cs

copy
1
variableName.fieldName

Esimerkiksi:

index.cs

index.cs

copy
12345678910111213141516
using 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

index.cs

copy
12345678910111213141516
using 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

index.cs

copy
12345678910111213141516
using 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); } }
question mark

Mikä on oikea syntaksi uuden olion luomiseksi luokasta nimeltä Car?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt