第一篇文章如此嗨! (如果我使用某些术语错误,请纠正我)
我有一个类Screen,我在其中创建另一个名为Player的类的实例(让我们调用这个实例Player)。现在,在Screen中我有一个名为ResetHUD的方法,我想从Player中调用它。
我该怎么做? ResetHUD中唯一的代码是1行,它将变量设置为另一个变量。据我所知,我可以使用EventHandler(但由于ResetHUD不需要任何参数,我认为我使用的是错误的)或委托(我不知道如何使用)。
非常感谢帮助!
答案 0 :(得分:0)
听起来你有一个遏制关系...... Screen对象包含一个(或多个?)Player对象。
当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
答案 1 :(得分:0)
在Player类上放置MyScreen属性。创建Player类时,将该属性设置为屏幕类。您现在可以参考屏幕,您可以从播放器内部调用。
答案 2 :(得分:0)
嗯,Player
中的某些内容需要引用Screen
实例。选项:
Player
时,将this
传递给构造函数,以便它能够记住它所属的Screen
Player
上创建一个活动,并从Screen
Screen
作为参数传递给所涉及的方法调用链(这在您的情况下可能不实用)