C# 在类之间交换数据
我有一个名为main的主类,在这个主类中有一个名为State的变量,它是C# 在类之间交换数据,c#,class,C#,Class,我有一个名为main的主类,在这个主类中有一个名为State的变量,它是int类型。状态变量包含一个状态ID,它让程序知道它在主类中的哪个状态(菜单、说明屏幕…),我有一个从Sprite类启动的对象。现在我的问题是如何告诉对象状态已被切换(这一个很简单,我可以使这一个很容易,但下一部分会给我带来问题),以及对象如何告诉主类他想要切换状态?这是我从您的问题中理解的 Main是调用Sprite实例方法的控制器类 状态确定在精灵实例上调用的方法 在这种情况下,Sprite类应该包含一个名为Stat
int
类型。状态变量包含一个状态ID,它让程序知道它在主类中的哪个状态(菜单、说明屏幕…),我有一个从Sprite类启动的对象。现在我的问题是如何告诉对象状态已被切换(这一个很简单,我可以使这一个很容易,但下一部分会给我带来问题),以及对象如何告诉主类他想要切换状态?这是我从您的问题中理解的
是调用Main
实例方法的控制器类Sprite
确定在状态
实例上调用的方法精灵
Sprite
类应该包含一个名为State
的静态属性(最好是enum
而不是int
)
实例方法负责更新状态变量。完成实例方法的执行后,调用方可以检查实例所处的状态,然后适当地确定下一个操作过程
更好的方法是根本不公开状态(除非外部对象需要使用)。在您的例子中,状态似乎仅用于确定执行的方法(我猜您有一个switch
语句来执行此操作)
如果您希望实例根据其自身的状态执行特定的方法,那么您可以将此决定权留给实例本身,而不是由控制器来决定。该实例可以有一个方法(例如
Update()
或Execute()
)根据操作的上下文(如菜单选项等)执行操作。此方法可以根据静态状态
成员决定执行哪个内部方法。您可能希望包含一个代码示例,以便更容易理解解释。表面上看,您可以拥有someObject.StateChanged(int-newState)
和Main.ChangeState(int-newState)
,但这取决于您的其他交互。您可能希望采用事件方法,例如。。。通常,我不希望“Main”类做很多事情,所以听起来你可能缺少一些类……是的,你完全正确,我是OOP新手,我的想法是,主类应该控制信息,而对象应该控制信息,主类应该只在需要时检查。