gpt4 book ai didi

asp.net - ASP.Net 变量的范围

转载 作者:行者123 更新时间:2023-12-02 17:55:21 24 4
gpt4 key购买 nike

我在变量范围方面遇到了一些奇怪的问题。我通过以下方式声明了一个变量:

public partial class MyClass: System.Web.UI.Page
{
protected static int MyGlobalVariable;

protected void MyFunction()
{
MyGlobalVariable = 1;
}
}

这在我的页面上运行良好。然而,当两个用户使用同一页面时,我发现我变得越界了。如果一个用户将变量设置为 5,而另一个用户访问该变量,则该变量将被设置为 5。如何设置该变量,使其只能由最初设置它的用户访问?

最佳答案

如果您将 MyGlobalVariable 声明为静态,那么该类的所有实例都将只存在它的一个实例,因此正如您所说,同一页面的多个实例上的多个用户将进行访问相同的值。

声明 int 时不使用 static 修饰符,或者如果您需要为该用户保留它,请考虑使用 Viewstate (对于页面范围)或 Session(用于 session 范围)

例如

protected int MyGlobalVariable
{
get
{
return ViewState["MyGlobalVariable"] != null ? Convert.ToInt32(ViewState["MyGlobalVariable"] : 0;
}
set
{
ViewState["MyGlobalVariable"] = value;
}
}

protected int MyGlobalVariable
{
get
{
return Session["MyGlobalVariable"] != null ? Convert.ToInt32(Session["MyGlobalVariable"] : 0;
}
set
{
Session["MyGlobalVariable"] = value;
}
}

关于asp.net - ASP.Net 变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806210/

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