例子 循环运行几次 Add这个过程 就知道static 是干什么的了 private z as long sub add() static x as long dim y as long x=x+1 y=y+1 z=z+1 ens sub只要不在当前过程 Static变量就无效 偶决的唯一的好处是 全局变量太多了 看着眼花 所以呢 分散一些到过程中 挖哈哈
举两个例子吧: 先看第一个例子 sub get_time() static iTimes as integer iTimes=iTimes+1 select case iTimes case 1 case 2 ... end select end syb 在这个例子中,每调用一次get_time,iTimes变量就会自动加1,可能LZ说为什么不使模块级变量呢?其实,get_time中的iTimes在此跟模块级变量差不多,不过,它增强了代码的可读性。当一个模块有10多个代码时,如果把相关的变量都申明为模块级变量,那会让人头晕的。再看一个例子: function get_data() as byte() static m_data() as byte redim m_data(9) ... get_data=m_data end function 假如m_data不为static数组,那么函数运行结束后,m_data会被VB自动释放,从而导致调用者访问错误。当然,有时m_data内存虽然被释放了,但由于没有被其它进程或线程所使用,同时它又处于当前运行代码所在的同一个内存页里,数据仍然能够访问,但是,这种访问是不安全的。 当然还有N多用法,LZ多练练就知道了。
在过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用 Static 语句声明的变量的值。
例子 循环运行几次 Add这个过程 就知道static 是干什么的了
private z as long sub add()
static x as long
dim y as long
x=x+1
y=y+1
z=z+1
ens sub只要不在当前过程 Static变量就无效 偶决的唯一的好处是 全局变量太多了 看着眼花 所以呢 分散一些到过程中 挖哈哈
先看第一个例子
sub get_time()
static iTimes as integer
iTimes=iTimes+1
select case iTimes
case 1
case 2
...
end select
end syb
在这个例子中,每调用一次get_time,iTimes变量就会自动加1,可能LZ说为什么不使模块级变量呢?其实,get_time中的iTimes在此跟模块级变量差不多,不过,它增强了代码的可读性。当一个模块有10多个代码时,如果把相关的变量都申明为模块级变量,那会让人头晕的。再看一个例子:
function get_data() as byte()
static m_data() as byte
redim m_data(9)
...
get_data=m_data
end function
假如m_data不为static数组,那么函数运行结束后,m_data会被VB自动释放,从而导致调用者访问错误。当然,有时m_data内存虽然被释放了,但由于没有被其它进程或线程所使用,同时它又处于当前运行代码所在的同一个内存页里,数据仍然能够访问,但是,这种访问是不安全的。
当然还有N多用法,LZ多练练就知道了。