需要在静态和非静态方法中使用实例

Need to use instance in static and non-static methods

我正在制作一个小文字游戏。开始对话在我的主要(静态)方法中。从那里,它会根据您的选择将您转到其他方法。

现在我想我需要一个 class 的实例才能正常工作。

例如:

Program p = new Program();

if(stuff){
    p.room1();
}
else{
    p.room2();
}

在那些其他方法中,全局变量会发生变化。

所以在main方法上面有:

public bool hasItem = false;

所以 room1() 看起来像,

public void room1(){
    if(stuff){
        p.hasItem = true;
    } 
}

我知道我搞砸了 main 方法。我是在 main 方法内部还是外部声明实例 "p"?我都试过了,但两种方式都出错了。

编辑:我最终在主要方法之外声明了一个静态 "Program" 以在其他地方使用。感谢您的帮助!

首先,您可以在 main 方法之外创建静态 Program,或者在 main 方法内声明一个程序,具体取决于您的体系结构。

其次,您不必从实例方法中引用实例。只需使用字段名称。像这样:

public void room1(){
    if(stuff){
        hasItem = true;
    } 
}

如果您想明确说明,可以使用 this.hasItem


或者更好的是,制作一个全新的 class 来保持您的状态。在 class 中使用 main 方法拥有实例成员是一种笨拙的设计。