2016-04-16 22 views
1

我正在研究一個我最近陷入困境的問題。我只是試圖運行一個程序來實例化並顯示一個名爲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; 
     } 
    } 
} 
+0

儘管這是一個合理的問題,請閱讀[MCVE]提供代碼的指導。我知道建造一個簡單的例子可能需要更多的努力,甚至可以解決問題而不會在SO上獲得一些名氣,但想出一個好的小樣本可能會給你帶來很好的答案和upvotes(大型代碼牆往往會帶來低估,但對於大多數單帳戶無所謂的情況下) –

+0

只是一個重構建議,爲什麼不讓你的GetPlayerData只返回一個HockeyPlayer,所以你不必擺弄所有這些輸出? –

回答

3

您可以設置您的私人領域在HockeyPlayer類的構造函數,但你嘗試通過公共屬性,你從來沒有設置對它們進行檢索。

更改屬性定義:

public string LastName { get { return name; } set { name = value;} }

等..

0

從對方的回答除了另一種選擇,直接刪除您的私人fields並使用自動屬性。

class HockeyPlayer 
{ 

    public string LastName {get; set;} 
    public int JerseyNum {get; set;} 
    public int Goals {get; set;} 

    public HockeyPlayer(string lastName, int jerseyNumber, int goalsScored) 
    { 
     LastName = lastName; 
     JerseyNum = jerseyNumber; 
     Goals = goalsScored; 
    } 
} 
相關問題