今日、ASP.NET の静的変数に不意を突かれました。これは、Web の世界で静的変数を根本的に誤解しているか、ASP.NET が思ったように動作しないことを意味するためです。
したがって、ASP.NET では
public class MyClass {
public static bool myVar = true;
}
ASPUserAMyClass.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
。静的変数がある場合にのみ重要です。それらはアプリケーション全体です。