在 void 中创建类的对象并在 main 中使用它

本文关键字:main void 创建 对象 | 更新日期: 2023-09-27 18:33:24

我的以下代码有问题:

public class Player
{
    public int money;
    public void setMoney(int amount)
    {
        money = amount;
    }
}
public void init()
{
    Player Player1 = new Player();
}
public void main()
{
    Player1.money = 9001;
}
private void mainForm_Load(object sender, EventArgs e)
{
    init();
    main();
}

当我运行给定的代码时,我收到一个错误,指出 Player1 在该上下文中不可用。所以我想我不能在 init 中创建一个 Player 对象,然后在 main 中使用它。

我该如何解决这个问题?

问候,DNCRFT

在 void 中创建类的对象并在 main 中使用它

您在init()中声明了Player的实例,C#中的变量范围规则定义了您不能在其定义的范围之外使用变量。 所以Player1只能在init() 中访问。如果要在init()之外使用它,则应在main()可见的范围内定义它

public class Player
{
 public int money;
 public void setMoney(int amount)
 {
  money = amount;
 }
}
Player Player1;
public void init()
{
 Player1 = new Player();
}
public void main()
{
 Player1.Money = 9001;
}
private void mainForm_Load(object sender, EventArgs e)
{
 init();
 main();
}

代码中的一些问题:
1. Player.money是字段,如果它有一个二传手,请尝试将其设置为私有并使用二传手和 getter 或将其作为属性,public int money { set; get; }
2. 考虑 C#
中的命名约定3. 考虑使用嵌套类

所以我建议这段代码

public class Player
{
   public int Money { get; set; }
}
public MainForm : Form
{
  private Player player1;
  public void Init()
  {
     this.player1 = new Player();
  }
  public void Main()
  {
     this.player1.money = 9001;
  }
  private void mainForm_Load(object sender, EventArgs e)
  {
    Init();
    Main();
  }
}

您的问题是Player的实例超出了范围。此外,您可能希望为您的财产使用速记声明。

public class Player
{
    public int Money {get; set;}
}
public void main()
{
    Player player = new Player();
    player.Money = 9001;
}