我是編程和自學的新手。我正在嘗試使用 C# 圍繞簡單的多人游戲展開思考。我有一個具有單一屬性名稱的 Player 類。我試圖從控制臺輸入中獲取用戶數量,創建一個具有該輸入大小的 Player 物件陣列,然后對于陣列中的每個物件,要求用戶輸入他們的姓名。當我嘗試它時,我得到一個物件參考未設定為物件錯誤的實體。
這是我的代碼:
using System;
namespace Multiplayer
{
class Program
{
static void Main(string[] args)
{
Console.Write("How many players?");
int NumOfPlayers = int.Parse(Console.ReadLine());
Player[] Players = new Player[NumOfPlayers];
NameGetter(Players);
}
static void NameGetter(Player[] ListOfPlayers)
{
foreach(var player in ListOfPlayers)
{
Console.WriteLine("What is Your Name? ");
player.Name = Console.ReadLine();
}
}
}
}
我覺得我在這里的方法中可能缺少一些關于 OOP 的基礎知識。
非常感謝您在此獲得的任何幫助!
uj5u.com熱心網友回復:
您已經構造了一個 type 陣列Player,但尚未構造 Player 物件,例如:
Players[0] = new Player();將構造第一個物件,但您希望在回圈中構造它們。
uj5u.com熱心網友回復:
只需嘗試Enumerable.Range像這樣創建您的陣列:
Player[] players = Enumerable.Range(0, NumOfPlayers).Select(x => new Player()).ToArray();
uj5u.com熱心網友回復:
如果您在影像上看到,知道您的陣列有 3 種播放器型別,其值為空。所以你必須先在這里創建一個物件。

**但 **

您可以更改 Getter 方法,例如
static void NameGetter(Player[] ListOfPlayers)
{
for (int i = 0; i < ListOfPlayers.Length; i )
{
Console.WriteLine("What is Your Name? ");
ListOfPlayers[i] = new Player
{
Name = Console.ReadLine()
};
}
}
Github 代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468871.html
標籤:C#
