• aspx页中的静态变量的生命周期


    实际上aspx.cs也是一个标准的.net类,所以他的静态资源和普通类没有什么不通

     静态资源在首次访问时会调用静态构造器创建类类型对象(静态属于类,动态属于对象,静态被静态构造器创建,动态被普通构造创建,所以实例对象的时候,静态不会被重新构造),类型对象的生存周期是整个应用程序域的生存周期,也就说被访问过的静态资源,只有它所在的应用程序域被卸载时才会被卸载。

    也就是说,当页面第一次被访问的时候,相当于页面被构造,静态变量被静态构造器初始化,然后再次访问这个页面的时候,虽然非静态资源重新被构造,但是此时静态资源并不被重新构造并一直存在(也可以用来做页面状态保持,不过不建议用,因为一直占用资源,不像session还定时被回收),直至应用程序域被回收。

    当然,如果是application级的,用静态变量来代替application对象是可以的,优点是速度快(存储区域不同,而且不用装箱拆箱),缺点是没有application对象通用(application对象可以随意存储任何对象)

    通俗点说,就是页面的静态变量页面第一次被访问时被初始化,在应用程序域一直保存,动态变量只在一个http请求作用(每次http请求相当于实例一次页面这个类)

    静态变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。而变量属于动态存储类别,存储在动态存储区空间(而不是静态存储区空间),函数调用结束后即释放。

    C# 并不支持 C/C++ 中的静态局部变量,C# 中的 static 只能用于类型和成员。

  • 相关阅读:
    易语言常用源码
    ci的数据库地址
    格式化输出php数组
    mysql插入表情问题
    线程、进程与协程2
    线程、进程与协程
    if __name=='__main__"的作用
    动态导入模块
    面向对象补充之方法
    getpass模块
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1361747.html
Copyright © 2020-2023  润新知