我最近有点麻烦。
在WebForm上,我声明一个静态对象,如下所示:
public static MyObject myobject=new MyObject();
Response.Write(myobject.Title());
现在,如果我加载另一个不包含myobject声明的页面,然后再次执行
Response.Write(myobject.Title());
我看到了初步的结果。导航期间,对象是否由于静态而存储在会话中? VIEWSTATE认为吗?还是发生了什么?
最佳答案
这只是一个静态变量。它与类型一起“存在”-因此它将由在同一AppDomain
中通过相同类型访问相同字段的所有代码共享。它会在AppDomain
回收时丢失,并且不会在多台服务器之间共享,等等。
基本上,除了偶尔用于本地缓存之外,在Webapp中使用static
变量不是一个好主意。