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