C#:在另一个函数中使用本地对象

本文关键字:对象 另一个 函数 | 更新日期: 2023-09-27 18:24:41

我的英语不好。我对特定于对象的类有问题。我使用函数创建该对象(WFA:button_click(

    public void button1_Click(object sender, EventArgs e)
    {
        clas = comboBox1.Text;
        name = textBox1.Text;
        sex = radioButton1.Checked;
        if (nazwa.Length != 0 && nazwa.Length != 0)
        {
            Hero Bohater = new Hero(name, clas, sex);
        }
    }

而且,当我使用另一个按钮时:

private void chodzenie_Click(object sender, EventArgs e)
        {
            int r = rnd.Next(1, 100);
            if (r % 10 == 0 || r % 10 == 5)
            {
                attack_mode();
            }   
        }
private void attack_mode()
        {
            int wybor = rnd.Next(0, 1);
            if (wybor == 0)
            {
                small_enemy wojo = new small_enemy("Antek");
                while (Bohater.hp >= 0 || wojo.hp >= 0)
                {
                    Bohater.hp -= (wojo.atack - Bohater.defence_p);
                    wojo.hp -= (Bohater.atack_p - wojo.defence);
                }
            }
            else
            {
                big_enemy wojo = new big_enemy("Waldek");
                while (Bohater.hp != 0 || wojo.hp != 0)
                {
                    Bohater.hp -= (wojo.atack - Bohater.defence_p);
                    wojo.hp -= (Bohater.atack_p - wojo.defence);
                }
            }     
        }

视觉对象看不到我的对象并收到错误

"Bohater"这个名字在当前上下文中不存在

如何使可用的创建对象(在函数中(并在全局范围内使用?

Ofc 所有这些都在一个文件中,但另一个函数。我正在尝试在互联网上获得答案,也许我的搜索不好。

C#:在另一个函数中使用本地对象

Hero bohater移到button1_Click之外,以便在中而不是在方法中定义它。

对于您当前的代码,bohater 是一个局部变量,只能在 button_Click 中使用。如果改为在类中定义它,则bohater将成为可由类中的任何方法使用的字段

因此,在您的班级中排名第一,将:

private Hero bohater;

button_Click里面,把:

this.bohater = new Hero(name, clas, sex);

您还需要更新 attack_mode 方法,如下所示:

while (this.bohater.hp >= 0 || wojo.hp >= 0)
{
    this.bohater.hp -= (wojo.atack - this.bohater.defence_p);
    wojo.hp -= (this.bohater.atack_p - wojo.defence);
}

请注意,this用于指示bohater在类范围内。(您不必使用 this但它使代码更易于理解。

将其定义为您所在类中的属性 Bohater:

public Hero Bohater {get; set;}

或者将其定义为字段,如果您只是在内部和临时使用它:

Hero Bohater;

而不是在按钮方法的 if 语句中定义它。这将允许类中的其他方法以及其他类(如果需要(访问它。 变量的定义仅扩展到 if 语句,并且不存在于该语句之外。

查看如何确定属性/字段/变量的范围。 这只是如何解决您的问题的一个例子;还有许多其他方法,具体取决于您打算如何使用"变量"。

相关文章: