gpt4 book ai didi

c# - 网站中静态变量的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 13:58:34 24 4
gpt4 key购买 nike

我准备了一个非常简单的网站来演示这种行为。

它有一个页面和一个按钮,代码如下:

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;

在用户单击按钮时执行,这就是将 st 更改为零的原因。这种行为我只能在框架 4.5 中重现:它不会出现在框架 3.5 中。有人可以向我解释这种行为吗?

最佳答案

静态数据存在于每个应用程序域实例中。由于托管 (IIS) 可以在网站调用之间卸载应用程序域,因此静态数据可能会丢失。

所以,您真的不应该在网络应用中依赖静态。

关于c# - 网站中静态变量的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com