让我们考虑这个页面的代码隐藏:
public partial class Products : Page
{
private static SomeClass SharedField;
public Product()
{
// ... Some logic
}
}
所有Products
页面实例共享相同的SharedField
,我知道这是静态字段的基本概念。但在这种情况下,真的吗?所有用户都可以访问(并且不能拥有自己的实例)到网站级别的相同静态字段?
如果是这样,Web开发人员将使用哪些方面?或者这是非推荐的做法?
答案 0 :(得分:2)
SharedField
将在一个实例中可用。
要了解更多信息,see this answer。
答案 1 :(得分:2)
是的,所有用户都会有一个静态字段实例,但仅限于一个工作进程。如果你有网络农场/网络花园,他们每个人都有自己的静态实例。如果工作进程重新启动,您将获得一个新的静态实例。
您必须使用该共享字段周围的锁定来确保线程安全。
至于为何使用它,我不确定,我从不这样做。我可以给你的最好的例子是内置静态HttpContext.Current
,它允许你访问请求,响应等。
答案 2 :(得分:0)
更好的做法是将对象存储在Application状态。
Application["MyObject"] = new SomeClass();