VB.NET共享成员高手经验谈

开发 后端
这里介绍可以用Class1.i访问VB.NET共享成员i,还可以用实例变量来访问。即使是Nothing的变量也可以访问VB.NET共享成员,而且不会出错。

学习VB.NET时,你可能会遇到VB.NET共享成员问题,这里将介绍VB.NET共享成员问题的解决方法,在这里拿出来和大家分享一下实例访问VB.NET共享成员。

大家都知道静态成员在VB中叫做共享成员,虽然刚接受起来有点别扭,但“VB.NET共享成员”的确是名副其实的:

  1. Public Class Class1  
  2. Public Shared i As Integer  
  3. 'Other none-shared members  
  4. End Class 

不但像在C#中那样,可以用Class1.i访问VB.NET共享成员i,还可以用实例变量来访问:

  1. Dim c1 As New Class1  
  2. c1.i = 100 

就像i是c1的成员一样!当然只有一个i,任何实例去修改i的值都将导致所有i的值改变(因为其实只有一个)。甚至Me和MyClass也可以访问VB.NET共享成员。

  1. Me.i = 100 
  2. MyClass.i = 100 

这在C#中是不可能做到的,一个纯正的C#程序员看到这些代码一定会觉得匪夷所思。为了揭示它的工作原理,我们可以做下列实验:

  1. Dim c1 As Class1  
  2. c1.i = 100 

注意,这里的c1为Nothing!,即使是Nothing的变量也可以访问VB.NET共享成员,而且不会出错。接下来我们实验更极端的情况:

  1. Dim o As Object = New Class1  
  2. o.i = 100 

结果——失败,不能通过后期绑定访问VB.NET共享成员。现在结果已经很明显,只有在VB明确了解对象类型的情况下,才能使用实例访问VB.NET共享成员,VB会自动判断类型,然后将所有对共享成员访问的语句改写成

  1. Class1.i = 100 

这样的语法。Delphi也支持这一有趣的特征,而且李维在《Inside VCL》中将此说成Delphi.NET相对于.NET的扩展之一。

【编辑推荐】

  1. 详细分析VB.NET WithEvents
  2. 浅析VB.NET局部静态变量
  3. 原理分析VB.NET开发控件
  4. 自己动手用代码实现VB.NET ListView加载数据
  5. 详细介绍VB.NET MyClass
责任编辑:佚名 来源: CSDN
相关推荐

2009-10-29 09:40:35

VB.NET Text

2009-11-02 11:11:07

VB.NET OOP设

2009-10-30 11:07:04

VB.NET Syst

2009-11-03 16:43:54

VB.NET拖放文件

2010-01-18 14:54:00

VB.NET共享成员变

2009-11-11 13:24:29

VB.NET事件

2009-10-13 17:08:10

CLR VB.NET

2009-09-14 15:04:44

2009-10-13 14:42:30

VB.NET静态成员

2010-01-15 13:44:39

VB.NET共享成员

2009-11-02 15:16:07

VB.NET编程

2009-10-26 13:13:17

VB.NET编码规范

2010-01-14 18:14:22

VB.NET开发特点

2009-10-14 11:27:20

VB.NET Grou

2009-10-16 14:31:48

VB.NET Noti

2009-10-10 15:43:51

2009-11-03 10:51:33

VB.NET共享

2010-01-19 15:08:18

VB.NET对象成员

2009-10-26 16:01:03

VB.NET正则表达式

2009-10-14 09:29:43

VB.NET加密
点赞
收藏

51CTO技术栈公众号