你可能知道在老ASP中,用VBScript还是可以写一些基于对象的程序的。但是你或许会对对象的生存期有一些疑惑。
构造函数 & 析构函数
class SomeClass
private sub class_initialize
end sub

private sub class_terminate
end sub
end class
通过在析构函数中打印一个字符串获得了对象生存期的确切印证
Set SomeObject = Nothing
这样做的意义在于把一个绑定到了一个对象上的名称SomeObject从这个对象中解脱出来,成为一个未绑定的名称。但是并不一定意为着被绑定的对象会被释放。如果
Set SomeObject1 = new CSomeClass
Set SomeObject2 = SomeObject1
Set SomeObject1 = nothing
这样就不会析构对象。因为仍然有SomeObject2绑定到了对象上,也就是说两个名称其实本来绑定到的是同一个对象。
页面结束
没有人工释放的对象会在页面执行结束的时候自动释放
局部对象
在Sub和Function中生成的对象,如果不是作为返回值返回了,而且返回值用名称继续绑定了,都会在过程结束的时候自动释放
构造函数 & 析构函数







通过在析构函数中打印一个字符串获得了对象生存期的确切印证
Set SomeObject = Nothing
这样做的意义在于把一个绑定到了一个对象上的名称SomeObject从这个对象中解脱出来,成为一个未绑定的名称。但是并不一定意为着被绑定的对象会被释放。如果
Set SomeObject1 = new CSomeClass
Set SomeObject2 = SomeObject1
Set SomeObject1 = nothing
这样就不会析构对象。因为仍然有SomeObject2绑定到了对象上,也就是说两个名称其实本来绑定到的是同一个对象。
页面结束
没有人工释放的对象会在页面执行结束的时候自动释放
局部对象
在Sub和Function中生成的对象,如果不是作为返回值返回了,而且返回值用名称继续绑定了,都会在过程结束的时候自动释放
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架