静态变量在ASP.NET页面中的作用在哪里?

Sha*_*pta 13 c# asp.net static-members

我今天接受了一次采访,一切都很顺利,但随后一位采访者问我一个问题静态变量在C#中的作用 - 在应用程序级别或页面级别.

我对这个答案并不是很清楚,因为我只知道静态变量存储在堆上,而我对Web相关的东西一无所知.

然后他试图通过举例说明我在一个页面中使用静态变量并且三个用户正在访问页面,其中一个用户更新了静态变量的值,让剩下的两个用户看到了什么值复制或更新将反映出来.

SLa*_*aks 20

除非它[ThreadStatic]是静态变量,否则每个AppDomain只有一个值.

在ASP.Net中,每个应用程序都有自己的AppDomain,因此静态变量将由应用程序中的所有请求共享.这是面试官所得到的 - static在ASP.Net应用程序中使用变量是一个常见错误,当多个请求同时发生时,可能会导致神秘的损坏错误.

  • `[ThreadStatic]`对ASP.Net无济于事,因为线程被重用了.正确的答案是永远不要使用静态变量,除非你确定你知道你在做什么.而是使用会话状态. (8认同)
  • @Henk:如果您认为可以使答案更清晰,请随意编辑. (2认同)