另一个类中的变量没有变化

时间:2016-02-02 13:24:18

标签: c# class variables

我有两个文件, class1.cs prologue.cs 。在序幕中有一个公共布尔"恐慌"。

Prologue.cs

public partial class Prologue : Script{

     public bool Panic;

     public void PrologueMission(){ //Called when the script starts
         Panic = true;
     }

在class1.cs中我有

void Update10(){ //Runs this function every 10 seconds
    Prologue prologue = new Prologue(); //prologue.cs
    if (prologue.Panic) { 
        //code...
    }
}

问题是,bool Panic在Class1.cs中仍然是假的,所以我创建了一个日志方法来找出发生了什么。恐慌在Prologue.cs中变为真,但在Class1.cs中仍然是错误的。

我尝试过其他方法,比如静态变量和返回true / false的方法但是它们似乎都没有用,所以我被困在这里。

简而言之:为什么在Prologue.cs中bool Panic设置为true,但在Class1.cs中始终保持为假。

我希望你也可以解释一下这不起作用的原因,但任何答案都会受到赞赏!

编辑:记录:

Prologue: .Panic:True //Set to true in Prologue.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
Prologue: .Panic:True //Set to true in Prologue.cs again
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs

3 个答案:

答案 0 :(得分:4)

import pandas as pd if __name__ == "__main__": input = pd.ExcelFile('C:/Users/ABC/SampleExcel.xlsx') dfs = {sheet: seg_sheet.parse(sheet) for sheet in seg_sheet.sheet_names} values = dfs['Sheet1'].to_dict('records') 仅通过调用var1 = var2 = var3 = 设置为true。

你没有打电话。

Panic

如果您希望最初设置它,则必须在PrologueMission

的构造函数中执行此操作
 void Update10(){ //Runs this function every 10 seconds
  Prologue prologue = new Prologue(); //prologue.cs

  prologue.PrologueMission(); // <<<<

  if (prologue.Panic) { 
      //code...
  }
 }

与:

相同
Prologue

根据评论:您必须在更新方法之外存储您的Prologe实例:

public partial class Prologue : Script{

    public bool Panic;

    public Prologue()
    {
      Panic = true;
    }

    //...
}

答案 1 :(得分:3)

我认为你将Consturctor与你的PrologueMission功能混淆了。您要么必须调用PrologueMission,要么将该函数作为构造函数。

将函数更改为构造函数:

public partial class Prologue : Script{

     public bool Panic;

     public Prologue (){ //Called when the script starts
         Panic = true;
     }

调用正确的函数:

void Update10(){ //Runs this function every 10 seconds
    Prologue prologue = new Prologue(); //prologue.cs
      prologue.PrologueMission(); // Need this call
    if (prologue.Panic) { 
        //code...
    }
}

答案 2 :(得分:0)

您在开始时启动脚本。然后在Update10函数中创建一个新的对话框实例。由于您没有参考您在开头所做的对话,因此Panic属性仍为false。

您必须在任何地方使用相同的对话框。在开头创建对话框并将其存储到您可以在任何地方使用的变量。