在类之间交换数据

时间:2011-09-02 11:06:00

标签: c# class

我有一个名为Main的主类,在Main类中有一个名为State的变量,其类型为int。状态变量包含一个状态ID,让程序知道它处于哪个状态(菜单,指令屏幕......)在Main类中,我有一个从Sprite类启动的对象。现在我的问题是如何告诉对象状态已经切换(这个很容易,我可以轻松地制作这个,但下一部分给我带来问题),对象如何告诉Main类他想要的切换状态?

1 个答案:

答案 0 :(得分:2)

这是我从你的问题中理解的,

  • Main是调用Sprite实例方法
  • 的控制器类
  • State确定Sprite实例
  • 上调用的方法

在这种情况下,Sprite类应该包含一个名为State的静态属性(最好是enum而不是int)。

实例方法有责任更新状态变量。完成实例方法的执行后,调用者可以检查实例所处的状态,然后适当地确定下一个操作过程。

更好的方法是根本不暴露状态(除非外部对象需要使用它)。在您的情况下,似乎状态仅用于确定执行的方法(我猜你有一个switch语句来执行此操作)。

如果要实例基于其自身状态执行特定方法,则可以将此决策留给实例本身,而不是由控制器决定。该实例可以有一个方法(比如Update()Execute()),它根据操作的上下文执行操作(如菜单选项等)。此方法可以根据静态state成员确定要执行的内部方法。