Zmienne statyczne w środowisku ASP.NET zaskoczyły mnie dzisiaj. Wtedy zostałem przerażony, ponieważ oznacza to albo mam fundamentalne niezrozumienie zmiennych statycznych w świecie sieci, albo ASP.NET nie działa tak, jak myślałem.Zmienne statyczne PHP vs ASP.NET
Więc w ASP.NET
public class MyClass {
public static bool myVar = true;
}
Jeśli ASPUserA ustawia MyClass.myVar = false
co drugi użytkownik w systemie doświadczy tych zmian. Tak więc ASPUserB będzie miał myVar
= false
. Moja Źródło: http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/
class MyClassPHP {
public static $myVar = false;
}
Jeśli PHPUserA ustawia MyClass::$myVar = true
to oznacza, że każdy użytkownik w systemie doświadcza tych zmian ???
Dziękuję.
Po dalszych badaniach zrobiłem to;
class MyClassPHP {
public static $myVar = 0;
}
Wtedy miałem użytkownicy którzy przeszli na stronę zrobić to
MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;
To zawsze było 1. Bez względu na to, ile razy odświeżany lub jednoczesnych połączeń ... WOHHH że był wielkim wniosek, albo jestem wkręcony !!
aktualizacja ASP.NET
Po dalszych badań i testów rzeczy znalazłem to.
public partial class MyPage : System.Web.UI.Page
{
public static int myInt = 0;
protected void Page_PreInit(object sender, EventArgs e)
myInt++;
}
}
Następnie moja strona może wyświetlić myInt
.
Pomiędzy przeglądarkami (Firefox i chrome) myInt
był stopniowo coraz wyższy podczas odświeżania strony. Nie ma to znaczenia, jeśli numer class
to static
. Ma znaczenie tylko, jeśli masz zmienne statyczne. Są szeroko stosowane.
WOW!Czy ASP.NET naprawdę to robi? To głupie =/ –
Jestem tak zdezorientowany. To niszczyło moje Paradygmaty przez okno! – Michael
Dziękuję za przekonanie mnie * nigdy * do korzystania z ASP.NET ;-P –