帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > 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编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统