我正在研究一個我最近陷入困境的問題。我只是試圖運行一個程序來實例化並顯示一個名爲HockeyPlayer的對象。我試着用二十的數組大小來使用它。我迄今爲止所做的一切似乎一直在努力。但是,當我編譯並完成輸入玩家數據時,該列表將返回爲零。我不確定這裏發生了什麼事。c#在另一個類中發送的數組發回零
這裏是我的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace TestHockeyPlayer
{
class Program
{
static void Main(string[] args)
{
HockeyPlayer[] players = new HockeyPlayer[20];
int x;
string lastName;
int jerseyNumber;
int goalsScored;
for(x = 0; x < players.Length; ++x)
{
GetPlayerData(out lastName, out jerseyNumber, out goalsScored);
players[x] = new HockeyPlayer(lastName, jerseyNumber, goalsScored);
}
for(x = 0; x < players.Length; ++x)
{
DisplayRoster(players[x]);
}
}
static void DisplayRoster(HockeyPlayer ply)
{
WriteLine("{0, 5}{1, -10}{2, 6}", ply.LastName, ply.JerseyNum, ply.Goals);
}
static void GetPlayerData(out string lastName, out int jerseyNumber, out int goalsScored)
{
string userInput;
WriteLine("Please enter player's last name >>");
lastName = ReadLine();
WriteLine("Please enter the jersey number for {0} >>", lastName);
userInput = ReadLine();
int.TryParse(userInput, out jerseyNumber);
WriteLine("How many goals has {0} scored? >>", lastName);
userInput = ReadLine();
int.TryParse(userInput, out goalsScored);
}
}
class HockeyPlayer
{
private string name;
private int jerseyNum;
private int goals;
public string LastName {get; set;}
public int JerseyNum {get; set;}
public int Goals {get; set;}
public HockeyPlayer(string lastName, int jerseyNumber, int goalsScored)
{
name = lastName;
jerseyNum = jerseyNumber;
goals = goalsScored;
}
}
}
儘管這是一個合理的問題,請閱讀[MCVE]提供代碼的指導。我知道建造一個簡單的例子可能需要更多的努力,甚至可以解決問題而不會在SO上獲得一些名氣,但想出一個好的小樣本可能會給你帶來很好的答案和upvotes(大型代碼牆往往會帶來低估,但對於大多數單帳戶無所謂的情況下) –
只是一個重構建議,爲什麼不讓你的GetPlayerData只返回一個HockeyPlayer,所以你不必擺弄所有這些輸出? –