帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程
变数的阶层
作者:佚名 发布时间:2005-04-02 来源:不详
 


程序阶层变量
    所谓程序阶层变量,就是在程序内宣告的变量。以前我们在Sub 或是Function 中宣告的变量,都是程序阶层的变量;也就是区域变量。程序阶层变量在程序执行时被宣告产生,而程序执行完毕后也同时被毁灭;也就是说其它的事件程序无法使用这个变量,因为它已经被毁灭了。下列范例宣告了一个程序阶层变量,并尝试在另外一个程序中将其它程序阶层的变量显示出来:

<Html>
<Script Language="VB" Runat="Server">
Sub Page_Init(Sender As Object, e As EventArgs)
Dim strTest As String '宣告程序阶层的变量
strTest = "这是程序阶层的变量"
End Sub
Sub Page_Load(Sender As Object, e As EventArgs)
Response.Write(strTest) '这里没有宣告strTest 变量, 就是Object 型态
End Sub
</Script>
</Html>


    上述范例变量strTest 在Page_Init 事件中被宣告,并指定其内容。不过由于该变量是属于程序阶层的变量,所以在Page_Init 事件程序执行完毕后即被消灭。因为在Page_Load 事件程序中要显示变量strTest 时,由于strTest 早已被消灭,所以这里的strTest 变量也是Page_Load 程序阶层的变量,对于没有宣告型态的变量就是Object 型态,无法显示任何的讯息。

网页阶层变数
    而网页阶层的变量则是网页在加载执行时,会先读取网页阶层宣告区中的宣告,所有在网页阶层宣告区中宣告的变量都视为网页阶层变量; 网页阶层变量在网页执行时先被宣告产生,在网页执行完毕后才会被毁灭。所谓网页阶层的宣告区,就是在程序外面,<Script> </Script> 之内的地方。为了程序的可读性,我们习惯在<Script> </Script> 标注中前面区域进行网页阶层的变量宣告。下列范例宣告了一个网页阶层变量strMSG:

<Script Language="VB" Runat="Server">
Dim strMsg As String '网页阶层的宣告区
Sub Page_Load(Sender As Object, e As EventArgs)
...
End Sub
</Script>


网页阶层变量以及程序阶层变量的生命周期,如下插图所示:


    我们知道网页开始执行时会先触发Page_Init 事件,接着再触发Page_Load 事件,所以我们利用这两个事件来作一个简单的试验。首先我们在网页阶层的宣告区中宣告了一个变量strMsg,另外在Page_Init 事件程序中宣告了一个strTest 变量;所以strMsg 为网页阶层变量,而strTest为则为程序阶层变量,如下程序所示:

<Html>
<ASP:Label Id="Label1" Runat="Server"/>
<ASP:Label Id="Label2" Runat="Server"/>
<Script Language="VB" Runat="Server">
Dim strMsg As String '宣告网页阶层的变量
Sub Page_Init(Sender As Object, e As EventArgs)
Dim strTest As String '宣告程序阶层的变量
strMsg = "这是窗体阶层的变量"
strTest = "这是程序阶层的变量"
End Sub
Sub Page_Load(Sender As Object, e As EventArgs)
Label1.Text=strMsg
Label2.Text=strTest '这里没有宣告strTest 变量, 就是Object 型态
End Sub
</Script>
</Html>



    上述范例的执行结果,只显示网页阶层变量的内容。这是因为在执行Page_Load 事件程序的时候,由于strTest 是在Page_Init 事件程序中宣告的,所以Page_Init 程序在执行完毕时立即将程序阶层变量strTest 毁灭,执行到Page_Load 事件程序时当然读取不到strTest 这个程序阶层变量。而strMsg 是在网页阶层宣告区中宣告的,在网页的所有程序执行完毕后才会被毁灭,所以在Page_Load 事件程序中还是可以读到strMsg 的内容。
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统