Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有在C#中创建对象的情况下访问类方法?_C#_.net_Winforms - Fatal编程技术网

如何在没有在C#中创建对象的情况下访问类方法?

如何在没有在C#中创建对象的情况下访问类方法?,c#,.net,winforms,C#,.net,Winforms,我正在使用Windows窗体应用程序开发C#game,我有一个名为“game”的窗体,其中包含以下内容(这只是完整代码的一部分): 下面是另一个名为“Player.cs”的类文件的一部分(当然具有相同的名称空间): 唯一的问题是,我无法在另一个方法中访问对象“p1”(通过单击按钮1创建)(在本例中为“KeyIsDown”),因为“p1”不存在。我怎样才能解决这个问题? 感谢您的建议:)这是因为您创建的变量不是全局变量。在功能按钮1\u单击中,您必须做的唯一一件事是初始化变量,如下所示: p1=新

我正在使用Windows窗体应用程序开发C#game,我有一个名为“game”的窗体,其中包含以下内容(这只是完整代码的一部分):

下面是另一个名为“Player.cs”的类文件的一部分(当然具有相同的名称空间):

唯一的问题是,我无法在另一个方法中访问对象“p1”(通过单击按钮1创建)(在本例中为“KeyIsDown”),因为“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;
    }
}