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

时间:2014-10-11 21:42:24

标签: c# .net wpf oop

我对C#,WPF和OOP全新,并且遇到了对象问题。

我正在创建一个小型RPG,并且有一个Player类,它有一个构造函数自动为instanciated对象分配默认值。

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

private void NewGameClick(object sender, RoutedEventArgs e)
{
    Player hero = new Player("Tristan");

    MessageBox.Show("The character " + hero.Name + " has been created.");
}

消息框确实显示了角色的名称,但我无法使用"英雄"函数在我的其余代码中创建的对象。是因为在函数结束时删除了对象吗?有没有办法保留该对象并在该函数之外使用它?

谢谢!

6 个答案:

答案 0 :(得分:9)

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.");
    }
}

然后,您可以在游戏private中使用class玩家对象。

答案 1 :(得分:1)

在函数内声明变量时,只能在函数范围内使用此变量。您必须使用班级的成员变量,或者返回此播放器。

答案 2 :(得分:1)

在你的课程之外宣布你的方法之外的球员。

答案 3 :(得分:1)

如果要在此方法之外使用hero对象,则应在此方法之外将其声明为全局变量。

或者更好甚至使用属性来访问,设置和获取英雄对象。

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

答案 4 :(得分:1)

在函数内声明的变量具有函数本身的生命周期(技术上,由于垃圾收集器太聪明,可能比函数本身短)。您想要的是根据您的需要确定变量的范围。这意味着,它可以作为字段限定为类实例(即字段生命周期与类实例的生命周期无关),或者您可以将变量的范围设置为静态(即它的生命周期很长)应用程序,除非您清除或替换静态变量)

答案 5 :(得分:0)

hero变量设为您班级的字段。您也可以将该字段包装到Property中。