如何在没有在C#中创建对象的情况下访问类方法?
我正在使用Windows窗体应用程序开发C#game,我有一个名为“game”的窗体,其中包含以下内容(这只是完整代码的一部分): 下面是另一个名为“Player.cs”的类文件的一部分(当然具有相同的名称空间): 唯一的问题是,我无法在另一个方法中访问对象“p1”(通过单击按钮1创建)(在本例中为“KeyIsDown”),因为“p1”不存在。我怎样才能解决这个问题?如何在没有在C#中创建对象的情况下访问类方法?,c#,.net,winforms,C#,.net,Winforms,我正在使用Windows窗体应用程序开发C#game,我有一个名为“game”的窗体,其中包含以下内容(这只是完整代码的一部分): 下面是另一个名为“Player.cs”的类文件的一部分(当然具有相同的名称空间): 唯一的问题是,我无法在另一个方法中访问对象“p1”(通过单击按钮1创建)(在本例中为“KeyIsDown”),因为“p1”不存在。我怎样才能解决这个问题? 感谢您的建议:)这是因为您创建的变量不是全局变量。在功能按钮1\u单击中,您必须做的唯一一件事是初始化变量,如下所示: p1=新
感谢您的建议:)这是因为您创建的变量不是全局变量。在功能按钮1\u单击中,您必须做的唯一一件事是初始化变量,如下所示: p1=新玩家(…) 但在函数外部和游戏类内部,必须生成一个名为: 玩家p1
在按下按钮之前,必须使其不进行初始化。祝你们好运。把这个变量作为表单的字段(每个人都可以访问它)怎么样?但让创造物保持在现在的位置。实际上有更好的模式,但这可以作为一个起点。你会想看看你的书,了解范围的概念。简单地说,声明变量的位置决定了可以在哪里使用它。在单击事件中声明它,这是您唯一可以使用它的地方
public Game()
{
InitializeComponent();
}
public void Button1_Click(object sender, EventArgs e)
{
Player p1 = new Player(textBox1.Text);
textBox1.Clear();
button1.Visible = false;
textBox1.Visible = false;
}
private void KeyIsDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up && !p1.jumping)
{
p1.jumping= true;
}
}
public class Player
{
public string name;
public int score;
public bool jumping = false;
public Player(string name)
{
this.name = name;
}
}