【发布时间】:2025-11-27 21:35:01
【问题描述】:
我准备了一个非常简单的网站来演示这种行为。
它有一页有一个按钮和以下代码:
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 中发生。有人可以解释一下这种行为吗?
【问题讨论】:
-
不要那样做。
staticweb 应用程序中的可变状态永远无法工作。 -
在框架 3.5 中完美运行
-
否;当您在 .Net 3.5 中对其进行测试时,它碰巧没有损坏。如果您同时收到两个请求,它将中断。
标签: c# asp.net variables static .net-4.5