ASP.NET中的静态变量
今天,ASP.NET中的静态变量让我措手不及。然后我惊慌失措了,因为这意味着我对于Web世界中的静态变量要么存在基本误解,要么ASP.NET并不像我想象的那样运作。
所以在ASP.NET中,
public class MyClass {
public static bool myVar = true;
}
如果ASPUserA设置
MyClass.myVar = false
,系统中的其他用户也会受到影响。因此,ASPUserB将具有myVar
=false
。我的来源:http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/。class MyClassPHP {
public static $myVar = false;
}
如果PHPUserA设置
MyClass::$myVar = true
,这是否意味着系统上的每个用户都会经历这些更改?谢谢。进一步研究后我得到了这个结果;
class MyClassPHP {
public static $myVar = 0;
}
然后我有用户去到一个页面并执行如下操作
MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;
我一直都是1。无论我刷新多少次或同时连接……哇,这真是个伟大的结论,否则我就完了!
ASP.NET更新
经过进一步研究和测试,我发现了以下内容。
public partial class MyPage : System.Web.UI.Page
{
public static int myInt = 0;
protected void Page_PreInit(object sender, EventArgs e)
myInt++;
}
}
然后我的页面可以显示myInt
。
在不同的浏览器(Firefox和Chrome)中,随着页面的刷新myInt
会逐渐变高。 因此,如果您的class
是static
,则这并不重要。 这仅与静态变量有关。 它们是应用程序范围内的。