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 所有这些都在一个文件中,但另一个函数。我正在尝试在互联网上获得答案,也许我的搜索不好。
将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
语句,并且不存在于该语句之外。
查看如何确定属性/字段/变量的范围。 这只是如何解决您的问题的一个例子;还有许多其他方法,具体取决于您打算如何使用"变量"。