在另一个类中发送的c#数组返回零
本文关键字:数组 返回 另一个 | 更新日期: 2024-09-25 19:23:03
我正在处理一个最近遇到的问题。我只是想运行一个程序,实例化并显示一个我命名为HockeyPlayer的对象。我试着将它与20的数组大小一起使用。到目前为止,我所做的一切似乎都在起作用。然而,当我编译并输入完玩家数据时,列表会返回为零。我真的不知道这里发生了什么。
这是我的代码:
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;
}
}
}
您在HockeyPlayer
类的构造函数中设置了私有字段,但您试图通过从未设置的公共属性来检索它们。
将您的属性定义更改为:
public string LastName { get { return name; } set { name = value;} }
等等。
除了其他答案之外的另一个选项,删除您的私有fields
并直接使用auto属性。
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;
}
}