首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >asp.net页面中的静态变量

asp.net页面中的静态变量
EN

Stack Overflow用户
提问于 2011-03-07 17:01:48
回答 5查看 18.6K关注 0票数 18

我对Asp.net页面中静态变量的使用有一个疑问。

我有一个页面写着UserDetails.aspx。在这个页面中,我有一个静态变量来存储特定于用户的一些数据。那么,这个变量是在多个用户之间共享,还是为每个用户创建一个单独的变量呢?

  public partial class UserDetails : System.Web.UI.Page
    {
       static int numberOfReviews=0;
       protected void Page_Load(object sender, EventArgs e)
         {
            numberOfReviews= GetReviews();
         }
    }

在这里,numberOfReviews是特定于每个用户还是共享?

numberOfReviews

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-07 17:04:17

静态变量的作用域是应用程序范围的。numberOfReviews将在所有用户之间共享。您需要使用Session来存储每个用户,所以它可以在所有页面中访问。另一方面,如果你只是需要在特定的页面上使用它,你可以将它保存在ViewState中,并可以在post中获取它。

票数 18
EN

Stack Overflow用户

发布于 2011-03-07 17:06:53

应用范围:具有应用范围的变量在整个应用程序中都可用,即所有页面上的应用程序的所有用户都可以使用。

会话作用域:当许多用户连接到您的站点时,他们中的每个人都将有一个单独的会话(与应用程序所识别的用户身份相关联)。当变量具有会话作用域时,它将为每个会话提供新的实例,即使用户正在访问相同的页面。会话变量实例在该会话的所有页面上都可用。

页面作用域:当页面上有一个实例变量时,它仅特定于该页面和该会话。

静态变量Application scope。在您的情况下,应用程序的所有用户都将共享相同的变量实例。

请注意,尽管静态变量在应用程序域中有一个实例。因此,如果您的应用程序部署在负载平衡的web场上,则每个应用程序域都将有一个单独的变量实例。这可能会给出不正确的结果。

根据这一点,你应该决定你的变量应该在什么范围内。在我看来,使用静态变量是一种代码味道,应该不鼓励使用。

票数 26
EN

Stack Overflow用户

发布于 2011-03-07 17:07:22

它将像应用程序“some_id”一样在整个应用程序范围内共享。

为此,请使用普通的int变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5217697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档