VB.net中 shared和static关键字的区别解密
来源:互联网 发布:淘宝升级在哪里 编辑:程序博客网 时间:2024/06/05 16:35
最近突然发现vb.net也有static关键字,那么它和中的shared是不是同一个意思呢?是不是就是C#中的static关键字呢?答案是否定的
这是msnd对于vb.net的static的解释
指定在声明一个或多个局部变量的过程终止后,这些已声明的局部变量继续存在并保留其最新值。
通常,过程终止后,此过程中的局部变量将立即消失。静态变量可继续存在,并保留其最新值。您的代码下次调用此过程时,此变量将不会重新初始化,仍然存储已赋给它的最新值。静态变量在定义它的类或模块的生存期内继续存在。
规则
-
声明上下文。 只能对局部变量使用 Static。这意味着 Static 变量的声明上下文必须是一个过程或过程中的块,而不能是源文件、命名空间、类、结构或模块。
不能在结构过程内使用 Static。
-
组合修饰符。 不能在同一声明中将 Static 与 ReadOnly、Shadows 或 Shared 同时指定。
行为
任何局部变量的行为都取决于此变量是否在 Shared 过程中声明。如果过程为 Shared,该过程的所有局部变量都自动共享,包括 Static 变量。整个应用程序只有一个这种变量的副本。使用类名调用 Shared 过程,而不是使用指向此类的实例的变量。
如果过程不是 Shared,则其局部变量为“实例变量”,包括 Static 变量。每个变量在类的每个实例中都有一个独立的副本。使用指向类的特定实例的变量调用非共享过程。该实例中的任何变量都与另一实例中相同名称的变量无关。因此,它们可以存储不同的值。
下面的示例说明 Static 的用法。
Public Class Describer
Public Function NextNumber() As Integer
Static Number As Integer
Number += 1
Return Number
End Function
End Class
Dim Desc As New Describer
MsgBox(Desc.NextNumber) '1
MsgBox(Desc.NextNumber) '2
MsgBox(Desc.NextNumber) '3
Static 修饰符可用于下面的上下文中:
Dim 语句 (Visual Basic)
但是不可以放在function,sub中进行修饰
那么在msdn中对于shared是怎么解释的呢?请看下面
指定一个或多个声明的编程元素与一个类或结构在整体上相关联,而不是与类或结构的特定实例关联。
何时使用 Shared
共享类或结构的成员使每个实例都可以使用该成员,而不是采用非共享模式,在非共享模式下,每个实例都需要有自己的副本。例如,如果一个变量的值应用于整个应用程序,这点很有用。如果声明该变量为 Shared,那么所有实例会访问相同的存储位置,而如果一个实例更改了变量值,所有实例都会访问更新后的值。
Shared 修饰符可用于下面的上下文中:
Dim 语句
Event 语句
Function 语句
运算符语句
Property 语句
Sub 语句
Public Class Describer
Shared Number As Integer
Public Function NextNumber() As Integer
Number += 1
Return Number
End Function
End Class
Dim Desc1 As New Describer
Dim Desc2 As New Describer
MsgBox(Desc1.NextNumber) '1
MsgBox(Desc1.NextNumber) '2
MsgBox(Desc1.NextNumber) '3
MsgBox(Desc2.NextNumber) '4
MsgBox(Desc2.NextNumber) '5
MsgBox(Desc2.NextNumber) '6
- VB.net中 shared和static关键字的区别解密
- VB.net中的Static变量和Shared变量的区别
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?
- 探秘VB.net中的shared与static
- vb.net中的public,private,shared关键字
- C和C++中static关键字的区别
- PHP中static关键字的作用和区别
- VB和VB.NET的大致区别
- VB和VB.NET的大致区别
- vb.net的关键字和结构体
- Java 关键字 final 和static 的区别
- Swift_关键字static和class的区别
- 关键字static和class的区别
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?(http://zhenyulu.cnblogs.com/articles/385047.html)
- VB.Net中结构和类的区别
- ASP.NET中static 变量和Application的区别
- 预编译指令知多少?
- 几个小算法
- 程序员,你值多少钱[转自论坛]
- IBM资料UML系列之类图
- 国内各大优秀免费源码下载站集合!
- VB.net中 shared和static关键字的区别解密
- 《放下就是快乐》之体会二
- 常用排序算法及C例程
- [转]使用MFC快速实现网络编程 CAsyncSocket
- 修改webShere的配置文件的位置。to:小米
- sourceinsight使用技巧
- 一个成都人在拉萨
- java Unicode与中文互换
- 在VS2005利用NUnit进行测试