静态变量不会立即初始化

时间:2016-04-21 03:00:16

标签: c# .net winforms

public class variables {
    public static int edit{ get;set; }
}

还尝试过:

public static int edit = 0;

public static int edit { get; set; } 

public static int edits { get { return edit; } }

使用表格

form:form1 {

    // Changing the value of variable to 1
    private void Form1_Load(object sender, EventArgs e) {
        variables.edit=1;
    }

    // Calling the new form where I'll use its value
    private void Button_Click(object sender, EventArgs e){
        form2 A=new form2();
        A.Show();
    }
}    

form:form2{

    // Showing the value of the variable in a message box
    private void Form2_Load(object sender, EventArgs e){
         MessageBox.show(variables.edit.ToSting());
    } 
}

消息在所有情况下都会再次0返回该呼叫。我需要知道如何将值初始化步骤作为第一步。我必须选项卡使用many变量将数据从一个表单保存到另一个表单并在加载中使用。

1 个答案:

答案 0 :(得分:0)

确保您的班级variables是静态的,而不仅仅是字段/属性:

public static class variables {
    public static int edit = 0;
}

静态类的另一个问题来源是在设置另一个时使用一个字段/属性:

public static class variables {
    public static int someValue = 2;
    public static int other = someValue + 3;
}

AFAIK,您无法确定静态构造函数在运行时首先设置哪个字段/属性,除非您在静态构造函数中设置值,如下所示:

public static class variables {
    static variables() {
        someValue = 0;
        other = someValue + 3;
    }

    public static int someValue;
    public static int other;
}

如果要在非静态类中声明静态字段/属性,请检查上面的问题,如果没有其他任何内容正在改变其他地方的静态字段/属性,即使在非静态类中也是如此。