VB.NET局部静态变量的示例分析

技术VB.NET局部静态变量的示例分析这篇文章将为大家详细讲解有关VB.NET局部静态变量的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。VB支持用Static关键字声明局部变

本文将详细解释VB.NET本地静态变量的实例分析。边肖觉得挺实用的,就分享给大家参考。希望你看完这篇文章能有所收获。

VB支持用Static关键字声明局部变量,这样变量的数值就可以保留在进程的末尾:

public subest1(Statici)

AsIntegeri=1

实现一个过程调用计数器EndSub。

我们实现了一个简单的进程计数器。每次调用Test时,计数器的值都会增加1。事实上,有很多情况下,我们希望保持变量的值。C#的静态不能在过程中使用。因此,要实现进程计数器,我们必须声明一个类级变量。这显然不如VB。因为不能阻止其他过程修改计数器变量。这与对象封装相同。它应该是一个方法的局部变量。现在我被迫把它分开,这显然是一个糟糕的设计。那么VB如何生成局部静态变量呢?将上面的代码返回到assembly,我们可以清楚地看到,在VB生成的CIL中,I不是作为局部变量出现的,而是作为类的Field出现的:fieldprivatespecialname

int32$STATIC$Test1$2001$i

也就是说,我被重命名为一个类的字段,但它被命名为specialname。试图访问代码中的$STATIC$Test1$2001$i是不可能的,因为它不是有效的标识符。但是,在IL中,为这个变量添加一个的代码与通用类字段完全相同,它是通过ldfld加载的。我觉得这个方法很聪明。它将一个静态变量转换为具有相同生命周期的类字段,但编译器控制访问权限,并使其成为局部变量。它还解释了为什么VB使用两个不同的关键字来声明静态变量mdash。mdash静态和共享。

因为VB.NET局部静态变量的本质是类的领域,它不同于真正的局部变量。比如在多线程的情况下,对VB.NET本地静态变量的访问和访问字段是一样的。

这篇文章是关于“VB中局部静态变量的实例分析”。NET”将在这里分享。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/129589.html

(0)

相关推荐

  • ckeditor粘贴word图片且图片自动上传组件

    技术ckeditor粘贴word图片且图片自动上传组件 ckeditor粘贴word图片且图片自动上传组件?
    项目需求可发布文章 需求涉及到富文本编辑器 经过查阅我选择了较为简便 不需要后端支持可独立完

    礼包 2021年12月1日
  • idea 远程debug

    技术idea 远程debug idea 远程debug1.pom.xml里配置jvmArguments参数 -Xdebug -Xrunjdwp:transport=dt_socket,address=5

    礼包 2021年11月26日
  • 雨加散念什么,“雨”字头下面加一个“散”念什么

    技术雨加散念什么,“雨”字头下面加一个“散”念什么霰 xiàn (形声雨加散念什么。从雨,散声。本义:雪珠) 同本义。亦称“雹” [graupel;sleet]
    夜深烟火灭,霰雪落纷纷。——白居易《秦中吟》 白色不透明

    生活 2021年10月29日
  • jquery中=是什么意思

    技术jquery中=是什么意思这篇文章主要介绍“jquery中=是什么意思”,在日常操作中,相信很多人在jquery中=是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery

    攻略 2021年11月17日
  • postgresql联表如何创建(postgresql动态添加过滤条件)

    技术用sequoiasql-postgresql创建一个关联表怎么优化本篇内容介绍了“用sequoiasql-postgresql创建一个关联表怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下

    攻略 2021年12月22日
  • 毫不犹豫英语,英语单词confront的用法

    技术毫不犹豫英语,英语单词confront的用法confront用于动词毫不犹豫英语。confront是及物动词。confront过去时:confronted,confront第三人称:confronts。动词随着人称、

    生活 2021年10月21日