C# 如何在同一类中设置属性?

C# 如何在同一类中设置属性?,c#,properties,C#,Properties,我很难设置某些变量的值。在我的GameController类中,我希望用户输入玩家的数量。然后,我希望我的代码创建一个数组,该数组将保存每个玩家的分数 class Program { static void Main(string[] args) { Game GC = new Game(); GC.GetNumberPlayers(); GC.SetInitialScores(); } }

我很难设置某些变量的值。在我的GameController类中,我希望用户输入玩家的数量。然后,我希望我的代码创建一个数组,该数组将保存每个玩家的分数

class Program
{
    static void Main(string[] args)
    {
        Game GC = new Game();
        GC.GetNumberPlayers();
        GC.SetInitialScores();
    }               
}

class Game
{
    private int players;
    private int[] scores;
    private string[] playerNames;

    public int Players
    {
        get { return players; }
        set { players = value; ; }
    }

    public int[] Scores
    {
        get { return scores; }
        set { scores = value; }
    }

    public int GetNumberPlayers()
    {
        string playersString;
        Console.WriteLine("Enter number of players");
        playersString = Console.ReadLine();
        Int32.TryParse(playersString, out players);
        return players;
    }

    public int[] SetInitialScores()
    {
        for (int i = 0; i < players; i++ )
        {
            scores[i] = 0;
        }
        return scores;
    }
}
类程序
{
静态void Main(字符串[]参数)
{
Game GC=新游戏();
GC.GetNumberPlayers();
GC.SetInitialScores();
}               
}
班级游戏
{
私人国际玩家;
私人int[]分数;
私有字符串[]playerNames;
公共整数播放器
{
获取{返回玩家;}
设置{players=value;;}
}
公共int[]分数
{
获取{返回分数;}
设置{scores=value;}
}
public int GetNumberPlayers()
{
弦乐演奏者弦乐;
Console.WriteLine(“输入玩家数量”);
playersString=Console.ReadLine();
Int32.TryParse(playersString,outplayers);
返回球员;
}
public int[]SetInitialScores()
{
对于(int i=0;i
有几件事:

GetNumberPlayers
返回一个
整数
,由于将其称为
GC.GetNumberPlayers(),因此您没有对其执行任何操作

如果希望获得
GetNumberPlayers()
的值,则需要像调用
int-numPlayers=GC.GetNumberPlayers()那样调用它

由于您在try解析中设置了
players
值,因此实际上没有任何理由返回它,因为您只在内部使用它(或者如果您在外部使用它,则将其分配给上述变量)

函数
SetInitialScores
也是如此,还有一个问题。数组需要将其长度声明为其初始化的一部分。您根本没有初始化数组,因此遇到了运行时错误。您可以根据在播放器中输入的值初始化数组,如下所示:

public void SetInitialScores()
{
    scores = new int[players];

    for (int i = 0; i < players; i++ )
    {
        scores[i] = 0;
    }
}
public void SetInitialScores()
{
分数=新的整数[玩家];
对于(int i=0;i
这里有一把小提琴在演示:

以及完全修改的代码:

public class Program
{
    public static void Main(string[] args)
    {
        Game GC = new Game();
        var players = GC.GetNumberPlayers();
        var scores = GC.SetInitialScores();

        Console.WriteLine("You entered {0} players!", players);

        Console.WriteLine("Printing scores");
        foreach (int val in scores)
        {
            Console.WriteLine(val);
        }

    }               
}

public class Game
{
    private int players = 0;
    private int[] scores;
    private string[] playerNames;

    public int Players
    {
        get { return players; }
        set { players = value; ; }
    }

    public int[] Scores
    {
        get { return scores; }
        set { scores = value; }
    }

    public int GetNumberPlayers()
    {
        string playersString;
        Console.WriteLine("Enter number of players");
        playersString = Console.ReadLine();
        Int32.TryParse(playersString, out players);
        return players;
    }

    public int[] SetInitialScores()
    {
        scores = new int[players];

        for (int i = 0; i < players; i++ )
        {
            scores[i] = 0;
        }

        return scores;
    }
}
公共类程序
{
公共静态void Main(字符串[]args)
{
Game GC=新游戏();
var players=GC.GetNumberPlayers();
var scores=GC.SetInitialScores();
WriteLine(“您输入了{0}个玩家!”,玩家);
控制台。WriteLine(“打印分数”);
foreach(分数中的int val)
{
控制台写入线(val);
}
}               
}
公开课游戏
{
私人整数玩家=0;
私人int[]分数;
私有字符串[]playerNames;
公共整数播放器
{
获取{返回玩家;}
设置{players=value;;}
}
公共int[]分数
{
获取{返回分数;}
设置{scores=value;}
}
public int GetNumberPlayers()
{
弦乐演奏者弦乐;
Console.WriteLine(“输入玩家数量”);
playersString=Console.ReadLine();
Int32.TryParse(playersString,outplayers);
返回球员;
}
public int[]SetInitialScores()
{
分数=新的整数[玩家];
对于(int i=0;i
不要认为这会有太大的影响,但你有一个额外的
在你的
玩家集{}
@Ben中,早在K&R C时代,一个单独的分号是不可操作的。我相信C#一直保持着这一点。这并不真正相关,但隐藏全局
GC
静态类成员(可用于操作垃圾收集器)可能不是最明智的命名选择。