我准备了一个非常简单的网站来演示这种行为。
它有一页有一个按钮和以下代码:
public partial class TestStatic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Class1.SetValue();
Label1.Text = Class1.st.ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = Class1.st.ToString();
}
}
和一类:
public class Class1
{
public Class1()
{
}
public static int st = 0;
public static void SetValue()
{
st = 1;
}
}
因此,当页面加载时,您会在 Label1 中看到 st=1。如果用户单击按钮,有时您会看到 st=0,有时会看到 st=1。在调试中我看到有时命令
public static int st = 0;
当用户单击 Button 时执行,这就是将 st 更改为零的原因。这种行为我只能在框架 4.5 中重现:它不会在框架 3.5 中发生。有人可以向我解释这种行为吗?