Biến tĩnh trong ASP.NET khiến tôi mất cảnh giác hôm nay. Sau đó, tôi đã trở thành freaked ra, bởi vì điều này có nghĩa hoặc là tôi có một sự hiểu lầm cơ bản của các biến tĩnh trong thế giới của web hoặc ASP.NET không hành động như tôi nghĩ rằng nó sẽ.Biến cố PHP và ASP.NET tĩnh
Vì vậy, trong ASP.NET
public class MyClass {
public static bool myVar = true;
}
Nếu ASPUserA đặt MyClass.myVar = false
mỗi người dùng khác trên hệ thống sẽ trải nghiệm những thay đổi này. Vì vậy, ASPUserB sẽ có myVar
= false
. Nguồn của tôi: http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/
class MyClassPHP {
public static $myVar = false;
}
Nếu PHPUserA đặt MyClass::$myVar = true
Điều này có nghĩa là mỗi người dùng trên hệ thống trải qua những thay đổi này ???
Cảm ơn bạn.
Khi nghiên cứu thêm tôi đã thực hiện việc này;
class MyClassPHP {
public static $myVar = 0;
}
Sau đó, tôi đã có những người dùng đến một trang làm điều này
MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;
Nó luôn luôn là 1. Không có vấn đề bao nhiêu lần tôi làm mới hoặc đồng thời kết nối ... WOHHH đó là một kết luận rất lớn, hoặc người nào khác tôi đang say!
ASP.NET cập nhật
Sau khi nghiên cứu và thử nghiệm thêm nữa điều tôi thấy điều này.
public partial class MyPage : System.Web.UI.Page
{
public static int myInt = 0;
protected void Page_PreInit(object sender, EventArgs e)
myInt++;
}
}
Sau đó, trang của tôi có thể hiển thị myInt
.
Giữa các trình duyệt (Firefox và chrome) số myInt
tăng dần khi tôi làm mới trang. Vì vậy, điều này không quan trọng nếu class
của bạn là static
. Nó chỉ quan trọng nếu bạn có các biến tĩnh. Họ là ứng dụng rộng.
WOW!ASP.NET có thực sự làm điều đó không? Đó là ngu ngốc =/ –
Tôi rất bối rối bởi nó. Nó loại thổi các Paradigms của tôi ra ngoài cửa sổ! – Michael
Cảm ơn bạn đã thuyết phục tôi * không bao giờ * sử dụng ASP.NET ;-P –