下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于VB.NET局部静态变量的知识点

作者:课课家教育     来源: http://www.kokojia.com点击数:1064发布时间: 2018-02-23 09:29:33

标签: 开发开发工具.NET学习

大神带你学编程,欢迎选课

  2002年VisualBasic.NET2002问世,此后VisualBasic包含在VisualStudio套装中。该版本又被称为VB7.0,是随vc#和ASP.NET一起在2002年发布的最初始的VB.net版本。今天小编要给大家分享一篇教程,那就是:关于VB.NET局部静态变量的知识点。

关于VB.NET局部静态变量的知识点_开发_开发工具_ .NET学习 _课课家

  一、前提概括

  小编经过长时间学习关于VB.NET局部静态变量的知识点,于是在这里的话小编就和大家分享一下,看完这一篇教程小编相信大家肯定有不少收获哟,希望本教程可以教会大家更加多的东西。

  想必不需要小编多说,大家都应该知道一点,VB.NET可以实现非常多C#不科做到的功能,就比如说:Optional参数、When语句、局部Static变量、对象实例访问静态方法、OnError处理异常、Handles绑定事件、Object直接后期绑定等等。VB以及C#这两者都是同属.NET的语言,编译出来的是同样的CIL,但是问题就来了?为什么VB可以支持非常多有趣的特性呢?那么接下来就让我们一起来探究一下VB.NET局部静态变量吧。具体如下所示:

  二、VB.NET局部静态变量的知识点

  VB.NET本身就已经支持使用Static关键字声明局部变量,这样子的话在过程结束的时候就能够直接保持变量的数值了,具体编程代码如下所示:PublicSubTest1()StaticiAsIntegeri+=1'实现一个过程调用计数器EndSub。

  现在我们就来实现了一个相对来说比较简单的过程计数器吧,其实方法相对来说,还是比较简单的。每调用一次Test,计数器的数值就会自动增加1。事实上还有非常多的情况,我们都希望可以保持变量的数值。然而C#的static是不可以用在过程内部的。因此假如说大家想要实现过程计数器,那么我们一定需要声明一个类级别的变量才可以哟。

  就小编个人认为,这样子操作明显没有VB.NET好。有人就会问小编,这是为什么呢?主要就是因为没有办法防止其他过程修改计数器变量。事实上这就和对象封装是同一个道理,本来应该是一个方法的局部变量,现在小编就需要被迫把它独立出来,显然这并不是一个非常好的设计。那么问题就来了?VB究竟是怎么生成局部静态变量的呢?

  其实我们仅仅只需要将上述代码返汇编,我们就能够直接清楚地看到在VB生成的CIL里面。在这里大家都需要注意一点,那就是i不是作为局部变量,而是作为类的Field出现的,具体编程语言代码如下所示:.fieldprivatespecialnameint32$STATIC$Test1$2001$i。

  换一句话来说,也就是i被改名作为一个类的字段,但被冠以specialname而已。在代码里面,大家试图访问$STATIC$Test1$2001$i这是不可能的事情,正正就是因为它不是一个有效的标识符。但是在IL里面的话,将这一个变量加一的代码却与一般的类字段完全一模一样的,主要就是通过ldfld进行加载的。就小编个人认为,我觉得这一个方法真的是非常的聪明,可以直接将静态变量变成生命周期一样的类字段,但是又由编译器来控制访问的权限,从而可以让它成为一个局部变量。同一时间这也可以解释了VB.NET为什么需要使用两个不一样的关键字来声明静态变量,也就是Static以及Shared这两者。

  由于VB.NET局部静态变量的实质是类的字段,所以它以及真正的局部变量还是有所不同的。比如在多线程条件下,对VB.NET局部静态变量的访问就以及访问字段相同。

  小编总结:

  静态变量的类型关键字是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,大家一定要记住哟。

赞(20)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程