从已创建的实例调用方法

本文关键字:调用 方法 实例 创建 | 更新日期: 2023-09-27 18:11:04

第一个帖子,大家好!(如果我用错了一些术语,请纠正我)

我有一个类Screen,我在其中创建了另一个名为Player的类的实例(让我们称这个实例为Player)。现在,在Screen中我有一个叫做ResetHUD的方法我想从Player中调用它。

我该怎么做呢?ResetHUD内部唯一的代码是1行,它将一个变量设置为另一个变量。据我所知,我可以使用EventHandler(但由于ResetHUD不需要任何参数,我认为我使用错误)或委托(我不知道如何使用)。

感谢帮助!

从已创建的实例调用方法

听起来你有一个包容关系…Screen对象包含一个(或多个?)玩家对象。

当Screen创建Player时,它可以在Player上设置一个属性,指示父(创建)Screen对象。

class Player
{
    private Screen parentScreen;
    public Player(Screen parentScreen) { this.parentScreen = parentScreen; }
    public MyMethodThatHasToCallScreensMethod()
    {
        parentScreen.ResetHUD();
    }
}

class Screen
{
    public Player CreatePlayer()
    {
        return new Player(this);
    }
}

你也可以使用事件(顺便说一下,事件可以有参数,也可以没有参数,这取决于你需要什么)。

这是我最喜欢的关于c#中的事件和委托的教程。从简单开始,并建立在每一步。 http://www.akadia.com/services/dotnet_delegates_and_events.html

在Player类上添加一个MyScreen属性。当你创建Player类时,将该属性设置为你的screen类。现在你有一个screen的引用,你可以从播放器内部调用。

嗯, Player中的需要有对Screen实例的引用。选择:

  • 创建Player时,将this传递给构造器,以便它可以记住属于
  • Screen
  • Player上创建一个事件并从Screen订阅
  • Screen作为参数沿着所涉及的方法调用链传递(这在您的情况下可能不实用)