我对在 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
最佳答案
应用程序范围:具有应用程序范围的变量在整个应用程序中可用,即对所有页面上的应用程序的所有用户可用。
session 范围:当许多用户连接到您的站点时,每个用户都会有一个单独的 session (与应用程序识别的用户身份相关)。当变量具有 session 时即使用户访问同一页面,它也会为每个 session 提供新的实例。 session 变量实例在该 session 的所有页面上都可用。
页面范围:当页面上有实例变量时,它仅特定于该页面和该 session 。
静态变量具有应用程序范围
。在您的案例中,应用程序的所有用户都将共享相同的变量实例。
请注意,虽然静态变量在应用程序域中有一个实例。因此,如果您将应用程序部署在负载平衡的网络场上,则每个应用程序域都将具有该变量的单独实例。这可能会给您带来不正确的结果。
基于此,你应该决定你的变量应该在什么范围内。IMO,使用静态变量是一种代码味道,应该不鼓励。
关于asp.net - ASP.NET页面中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217697/