如何从我的方法之外访问c sharp中的对象

本文关键字:sharp 对象 访问 我的 方法 | 更新日期: 2023-09-27 18:26:17

我对C#、WPF和OOP完全陌生,并且面临对象问题。

我正在创建一个小型RPG,并有一个Player类,它有一个构造函数,可以自动为实例化的对象分配默认值。

因此,使用WPF/XAML,我创建了一个链接到函数的按钮;当我按下按钮时,这个功能将被执行:

private void NewGameClick(object sender, RoutedEventArgs e)
{
    Player hero = new Player("Tristan");
    MessageBox.Show("The character " + hero.Name + " has been created.");
}

消息框确实显示了角色的名称,但我不能在代码的其余部分使用该函数创建的"英雄"对象。是因为对象在函数末尾被删除了吗?有什么方法可以保留该对象并在该函数之外使用它吗?

谢谢!

如何从我的方法之外访问c sharp中的对象

hero对象仅存在于NewGameClick方法内部,并且在该方法执行完毕后将超出范围。

您可以在方法之外声明您的对象,它将在该类的范围内。例如。

public class Game 
{
    Player hero = new Player("Tristan");
    private void NewGameClick(object sender, RoutedEventArgs e)
    {       
        MessageBox.Show("The character " + hero.Name + " has been created.");
    }
}

然后在游戏class中有一个private Player对象可以使用。

在函数内声明变量时,只能在函数的作用域内使用此变量。你必须使用你类的成员变量,或者返回这个玩家。

在类的顶部声明方法之外的播放器。

如果您想在该方法之外使用hero对象,那么您应该将其声明为该方法之外的全局变量。

或者更好的是使用属性来访问、设置和获取英雄对象。

我建议在这里进一步阅读:http://www.dotnetperls.com/global-variable

函数内部声明的

变量具有函数本身的生存期(从技术上讲,由于垃圾收集器过于智能,可能比函数本身更短)。您想要的是根据您的需要确定变量的范围。这意味着,它可以作为一个字段(即字段的生存期与类实例的生存期不关联)作用于类实例,也可以将变量作用于静态(即,除非清除或替换静态变量,否则它几乎在应用程序的整个生存期内都存在)

hero变量作为类的字段。您也可以将该字段包装到属性中。