以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教静态变量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92923)

--  作者:hbhb
--  发布时间:2016/11/16 14:43:00
--  请教静态变量

静态变量的值能够保存到下次运行事件代码

大师:请问下次是什么意思?
1、如果是窗口中的按钮事件,是不是只要窗口关闭后,再打开,再按按钮就为下一次?如果窗口隐藏后再显示呢?
2、如果是窗口中容器中的按钮事件,又是怎样?
3、如果是是控件中的页签中的按钮呢?页签的隐藏与关闭?

--  作者:blackzhu
--  发布时间:2016/11/16 14:52:00
--  
 

使用静态变量

我们知道,在事件代码运行过程中,普通变量的值并不会保存,下次运行事件代码时,变量会重新回到初始值。
虽然我们可以用全局变量保存值,以便下次调用,但是全局变量主要用于不同事件之间的数据交换,资源"开销"较大。
如果不需要和其它事件交换数据,仅仅是为了保存数据,以便下次运行事件代码的时候调用,那么请使用静态变量
和普通变量一样,静态变量只能在定义它的事件代码中访问,但是静态变量的值能够保存到下次运行事件代码。

声明静态变量的语法是:

Static 变量名 As 数据类型

例如:

Static Name As String

静态变量通常用于标记。

示例一

为了说明普通变量和静态变量的差别,请在项目事件MainTableChanged加入如下代码:

Dim Val1 As Integer \'定义一个普通变量Val1
Static Val2
AS Integer \'定义一个静态变量Val2
Val1 = Val1 +
1
Val2 = Val2 +
1
MessageBox.Show(
"Val1 = " & Val1 & " Val2 = " & Val2)

设置完成后,反复切换主表,你会发现Val1的值始终是1,而Val2的值在每次切换主表后都会加1。
这是因为Val1是一个普通变量,虽然每次运行时也给Val1的值加上了1,但是增加后的值,并不会保存到下次运行。
而Val2是一个静态变量,每次运行给Val2的值加1,这个增加后的值会保存到下次运行,所以每次都是在上一次加1的基础上再加1。


--  作者:hbhb
--  发布时间:2016/11/16 15:03:00
--  
我是说,静态变量什么时候恢复到原始值?
--  作者:有点蓝
--  发布时间:2016/11/16 15:28:00
--  
重启项目。
--  作者:blackzhu
--  发布时间:2016/11/16 15:29:00
--  
 关闭退出后再起
--  作者:hbhb
--  发布时间:2016/11/16 15:32:00
--  
窗口关闭,还是项目关闭?