ASP.NET 中的静态变量今天让我措手不及。然后我吓坏了,因为这意味着要么我对网络世界中的静态变量有根本的误解,要么 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。无论我刷新多少次或同时连接多少次...... WOHHH 这是一个很好的结论,否则我搞砸了!
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
。
myInt
当我刷新页面时,在浏览器(Firefox 和 chrome)之间逐渐变高。所以这并不重要,如果你class
是static
。仅当您有静态变量时才重要。它们的应用范围很广。