Klassobjekt
Ett objekt av en klass kan skapas med följande syntax:
index.cs
1className variableName = new className();
Du kan komma åt ett fält i en klass med hjälp av punktoperatorn (.
):
index.cs
1variableName.fieldName
Till exempel:
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); } }
Uttrycket new Player();
används för att skapa ett nytt objekt, medan Player p1
används för att skapa en variabel för att lagra det nya objektet. Att enbart skriva Player p1;
skapar alltså endast en tom variabel utan något objekt i, därför måste du skapa ett nytt objekt och lagra det i variabeln: Player p1 = new Player();
.
Om du skapar en array av storlek 10
med hjälp av klassen Player
, kommer det inte att skapa 10 objekt, utan det skapas en tom array med kapacitet att lagra 10 Player-objekt. Detta kan illustreras med följande exempel:
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); } }
Felet säger "Object reference not set to an instance of an object", vilket helt enkelt betyder att du försöker komma åt data från ett objekt som inte finns – det finns inget objekt att komma åt på index 0
.
Detta kan åtgärdas genom att manuellt skapa ett objekt på index 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); } }
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Klassobjekt
Svep för att visa menyn
Ett objekt av en klass kan skapas med följande syntax:
index.cs
1className variableName = new className();
Du kan komma åt ett fält i en klass med hjälp av punktoperatorn (.
):
index.cs
1variableName.fieldName
Till exempel:
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); } }
Uttrycket new Player();
används för att skapa ett nytt objekt, medan Player p1
används för att skapa en variabel för att lagra det nya objektet. Att enbart skriva Player p1;
skapar alltså endast en tom variabel utan något objekt i, därför måste du skapa ett nytt objekt och lagra det i variabeln: Player p1 = new Player();
.
Om du skapar en array av storlek 10
med hjälp av klassen Player
, kommer det inte att skapa 10 objekt, utan det skapas en tom array med kapacitet att lagra 10 Player-objekt. Detta kan illustreras med följande exempel:
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); } }
Felet säger "Object reference not set to an instance of an object", vilket helt enkelt betyder att du försöker komma åt data från ett objekt som inte finns – det finns inget objekt att komma åt på index 0
.
Detta kan åtgärdas genom att manuellt skapa ett objekt på index 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); } }
Tack för dina kommentarer!