在另一个类中发送的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;
        }
    }
}

在另一个类中发送的c#数组返回零

您在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;
    }
}