
Static 语句
在过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用
Static 语句声明的变量的值。
说明:
模块的代码开始运行后,使用
Static 语句声明的变量会一直保持其值,直至该模块复位或重新启动。可以在非静态的过程中使用 Static
语句显式声明只在该过程内可见,但具有与包含该过程定义的模块相同生命期的变量。
Static 语句示例
该示例使用 Static 语句,可以在模块代码运行期间一直保持变量的值。
'函数定义。Function KeepTotal(Number)
'只有 Accumulate 变量能在调用过程之间保持其值。
Static Accumulate
Accumulate = Accumulate + Number
KeepTotal = Accumulate
End Function
'Static 函数定义。
Static Function MyFunction(Arg1, Arg2, Arg3)
'所有局部变量在函数调用之间都能保持其值。
Accumulate = Arg1 + Arg2 + Arg3
Half = Accumulate / 2
MyFunction = Half
End Function
关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
•; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
•; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
•; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
例子可以参考我的下面URL
变量有不同,因为变量有两个属性,生存期和作用域。
定义在函数外部是全局变量,生存期是整个程序运行到结束,作用域也是整个程序。
定义在函数内部是局部变量,生存期是整个程序运行到结束(对于static),而作用域只是函数被调用的这个过程。也就是说不能在函数外调用它。
函数一般的,在一个变化过程中,有两个变量x、y,如果给定一个x值,相应的就确定唯一的一个y,那么就称y是x的函数,其中x是自变量,y是因变量,x的取值范围叫做这个函数的定义域,相应y的取值范围叫做函数的值域。
在类(class)上加入static修饰, 表示该类无法被实例化,并且该类中,无法实例化变量或函数。
那么如果要在此静态类中添加函数、变量、属性,则必须都是静态的。
参考MSDN的解释:
静态类的主要特性:
1:仅包含静态成员。
2:无法实例化。
3:静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。
4:不能包含实例构造函数。
5:如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。
换一句大白话,C# 20中引入了static修饰词就是为了控制代码中“静态类内部不允许出现非静态变量或函数”的。 深一层的原因可能只有搞编译器的那些人才知道。
所以,可以在普通类中添加静态方法,但是静态类中的方法、变量都必须是静态的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)