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

时间:2017-01-10 23:16:04

标签: c# methods instance

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

现在我认为我需要有一个班级实例来实现这个目的。

例如:

Program p = new Program();

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

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

所以主要方法之上有:

public bool hasItem = false;

所以room1()看起来像,

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

我知道我用主要方法搞砸了。我是否在main方法的内部或外部声明实例“p”?我尝试了两种方法,但两种方式都有错误。

编辑:我最终在主要方法之外声明一个静态“程序”,以便在其他地方使用。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

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

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

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

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

或者更好的是,创建一个全新的类以保持您的状态。使用main方法在类中拥有实例成员是笨拙的设计。