我无法为公共变量设置值

时间:2019-03-25 14:45:40

标签: c# variables

  • 我有一堂课,名字叫Cls_Options
  • 在此类中,我有下一个变量:

    public bool JoulVarQuestionMsgStatus;
    
  • 我在(A)表单中包含一个按钮。

  • 单击此按钮时,我为变量JoulVarQuestionMsgStatus设置了一个值。

    private void btnOK_Click(object sender, EventArgs e)
    {
        Cls_Options.JoulVarQuestionMsgStatus = true;
        Close();
    }
    
  • 我显示表格(A)到表格(B),并且:

  • 我有一个if语句来查看JoulVarQuestionMsgStatus的值,如果它是true,则执行某项操作,如果false进行其他操作。

    MSGs.FrmMsgQuestion FrmMsgQuestion = new MSGs.FrmMsgQuestion();
    FrmMsgQuestion.lblMsg1.Text = Cls_Options.MsgSaveNew;
    FrmMsgQuestion.ShowDialog();
    
    if (Cls_Options.JoulVarQuestionMsgStatus== true)
    {
    
        int NewID = Cls_Countries.Joul_GetIDs();
        this.txt1.Text = NewID.ToString();
    
        this.txt2.Text = null;
        this.txt2.Select();
    }
    

我的问题是:当我测试代码时,我看到下一个代码中的变量保存了我分配的值:

private void btnOK_Click(object sender, EventArgs e)
{

    Cls_Options.JoulVarQuestionMsgStatus = true;
    Close();
}

但是当我在if语句中看到变量的值时,我看到该变量没有值,它将保留其默认值! 请帮助我

2 个答案:

答案 0 :(得分:1)

1。您可以设置Cls_Options类属性(如果它是公共静态类),那么在您看来,情况并非如此。

public static class Cls_Options
{
   public static bool JoulVarQuestionMsgStatus = false;
}

然后您可以将其值设置为:

Cls_Options.JoulVarQuestionMsgStatus  = true;

2。如果Cls_Options不是静态的,则它必须是一个公共类,然后您可以设置该类实例的属性,例如:

Cls_Options cls_o = new Cls_Options();
cls_o.JoulVarQuestionMsgStatus = true;

答案 1 :(得分:0)

public bool JoulVarQuestionMsgStatus;定义一个 instance 变量。对于Cls_Options类的每个实例,此变量都有一个单独的副本。

您正在尝试将此变量用作静态变量。在这种情况下,该变量将有一个副本(与类绑定而不与类实例绑定)。

要解决此问题,您可以执行以下两项操作之一:

  1. 将变量设为静态:public static bool JoulVarQuestionMsgStatus;
  2. 调用它时,使用创建并存储在某个地方的Cls_Options类的实例。