精华内容
下载资源
问答
  • VB.net 中Module使用1

    千次阅读 2013-09-04 22:46:35
    创建只包含一个共享成员的一个VB.NET类的更简单的方法就是定义一个ModuleModule是规则的、不能创建的类,它的成员是静态的。 类模块与模块的区别: 1.类模块的数据对创建的每一个新实例都是惟一的,而在标准模块...
    创建只包含一个共享成员的一个VB.NET类的更简单的方法就是定义一个Module。Module是规则的、不能创建的类,它的成员是静态的。
    
    类模块与模块的区别:
    1.类模块中的数据对创建的每一个新实例都是惟一的,而在标准模块中的数据对应 应用程序或者对标准模块内的方法是全局的.
    2.当类实例失效时,类模块中的数据也失效,或者收集到垃圾桶,而标准模块在应用程序的生存期都是活动的,直到应用程序退出.
    但还是不太清楚其实用性,想问一下大家,
    1、如果我在 模块(Module)里实例化一个类,如:
    Module Model
        Public mod_DB As New DB
            …… ……
     是否 模块(Module)会把这个 mod_DB 成员 shared 了,并且每次在其他地方调用mod_DB时,mod_DB是共享的,mod_DB里面的数据(如果有)那就一定要是相同的,不然数据就不能独立而错误了。
     
     还是 模块(Module)在每次被调用时都 new 一次 DB 赋给 mod_DB ,这时 mod_DB里面的数据就可以互相独立而不受干扰了??
    最后,问一下 在模块(Module)里实例化一个类 是否有其意义。好不好或能不能这样做?
    请大家指教指教,谢谢。

    我以前做了一个小东西,使用module,就是因为类定义问题出现了bug.
    模块(Module)在每次被调用时都 new 一次 DB 赋给 mod_DB  会出现干扰。
    模块(Module)里实例化一个类 有其意义,如果那个类是唯一的不可变的,用在module里面很好。
    Module好比静态类,可以直接使用ModuleName.FunctionName()调用其中方法。

    Class ClassName
       public shared Function fnXXX() 
       ...
       End Function
    End Class
    类似
    直接使用ClassName.fnXXX()调用。
    Module ModuleName
       public Function fnXXX()
    End Module
    调用:ModuleName.fnXXX()
    Module里的成员在第一次使用到它时被自动初始化。
    (默认有个不带参数的New方法,你可以自己添加)

    模块怎么会被new 很多次呢?
    你在模块中建立了一个类的实例,那么就相当于声明了一个shared的变量。也就是说你可以在程序的任何地方直接使用该类的这个实例的属性或者方法,而不用再实例化一个出来。
    共享级别的过程或者字段,是说经常被调用的对象。比如说连接数据库的字符串和返回连接的方法和过程。
    你可以在模块中实例化一个类,定义若干的方法或过程,然后就要使用application.run()来打开一个主窗口(或登录窗口)
    存在这种疑问可以自己测试呀:
    Public Class Form1
        Inherits System.Windows.Forms.Form
        Windows 窗体设计器生成的代码
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim a As AppClass
            a = New AppClass
            a = New AppClass
            a = New AppClass
        End Sub
    End Class
    Public Class TestClass
        Private i As Integer
        Sub New()
            i = i + 1
        End Sub
        Public ReadOnly Property NowI() As Integer
            Get
                Return i
            End Get
        End Property
    End Class
    Public Module TestModule
        Public m As New TestClass
    End Module
    Public Class AppClass
        Sub New()
            MsgBox(TestModule.m.NowI)
        End Sub
    End Class
    再将Module转换为Class,效果是一样的。
    Public Class AppClass
        Sub New()
            MsgBox(TestModuleClass.m.NowI)
        End Sub
    End Class
    Public NotInheritable Class TestModuleClass
        Public Shared m As TestClass
        Shared Sub New()
            m = New TestClass
        End Sub
    End Class
    谢谢 大家的意见!按此说法应该是共享的,但这样 实例了的类的数据也要是一定相同的,不然就会有数据不正确,这样说
    在 Module 直接写 需 shared 的方法和其字段,而不用实例化其他的类,因为实实例化一个对象一般是要独立的,不受影响的,这样和 Module 里的 共享 思想就有冲突了,
    大家觉得是否是这样呢??
    另,谢谢大家的热心帮助!
    我那个Public Class TestClass
    有点问题
    Private i As Integer
    应该是
    Private Shared i As Integer
    这样才能反映i是否改变了。
    当然,改了以后的结果还是一样的,i没变。
    Module和静态类思想是一样的。在内存中只被实例化一次。当然不需要你进行实例化。
    包括一些静态的数据成员,他们在托管堆中的位置与一般对象的位置是不同的。
    以上是我自己的想法 :)
    感觉是那种首先运行,首先实例化的东西。提供初始化功能,具体功能和class很像!
    展开全文
  • VB.NET中Module的概念

    千次阅读 2017-04-12 15:55:07
    上网查了一下VB.NET里面的Module,才发现这是学习VB.NET遇到的第一个典型的问题就是:为什么VB.NET会有一个Module的东西,而在C#等语言是没有的呢? 首先,这是一个历史原因。早先的VB语言都有模块和类模块的...

    今天学习VB.NET,发现VB.NET里面有一个Module的东西,如下图(图-1)所示:

    图-1

    上网查了一下VB.NET里面的Module,才发现这是学习VB.NET遇到的第一个典型的问题就是:为什么VB.NET中会有一个Module的东西,而在C#等语言中是没有的呢?

    首先,这是一个历史原因。早先的VB语言都有模块类模块的概念。所谓模块一般就是存放公用的一些方法(Sub)或者函数(Function),而类模块,相当于就是我们经常所说的类的概念。 

    模块(Module)里面可以直接有方法,这些方法自动就是静态的(或者称为共享的——VB.NET中的关键字是Shared),这些方法可以直接调用,所以Module是无法实例化,也没有必要实例化的

    模块无法继承,也无法实现接口。

    模块里面可以有类,但其实这个类并不需要真的通过模块作为前缀来引用。所以模块有点虚的概念

    模块可以被组织到命名空间中去,因为模块其实是个虚的,所以它的方法也可以直接外层的命名空间调用

    Module代码范例:

     1 '用命名空间封装Module
     2 Namespace VBModuleTest
     3     ''' <summary>
     4     ''' 模块无法继承,无法实现接口
     5     ''' </summary>
     6     ''' <remarks></remarks>
     7     Module ModuleTest
     8         ''' <summary>
     9         ''' 模块里面的方法都是静态的,无需实例化,也无从实例化
    10         ''' </summary>
    11         ''' <remarks></remarks>
    12         Sub Main()
    13             'new一个Class1实例
    14             'Dim clazz As Class1 = New Class1这样也是对的
    15             Dim clazz As Class1 = New Class1()
    16             clazz.Name = "Class1类"
    17             Console.WriteLine(clazz.Name)
    18             Console.WriteLine(clazz.GetClassName())
    19             Console.ReadKey()
    20         End Sub
    21         ''' <summary>
    22         ''' 有返回值的方法,用Function来声明
    23         ''' </summary>
    24         ''' <returns></returns>
    25         ''' <remarks></remarks>
    26         Public Function Test1() As String
    27             Console.WriteLine("这个是Module里面的Test1方法")
    28             Return ""
    29         End Function
    30         ''' <summary>
    31         ''' 无返回值的方法,用Sub来声明
    32         ''' </summary>
    33         ''' <remarks></remarks>
    34         Public Sub Test2()
    35             Console.WriteLine("这个是Module里面的Test2方法")
    36         End Sub
    37 
    38         ''' <summary>
    39         ''' 类型可以放在模块里面,但主要的现实意义在于分类存放而已,放在模块里面并不影响该类型对外的引用。
    40         ''' 例如我们并不一定需要用VBModuleTest.ModuleTest.Class1,
    41         ''' 而是直接通过VBModuleTest.Class1就可以对其进行引用
    42         ''' </summary>
    43         ''' <remarks></remarks>
    44         Public Class Class1 : Implements IComparable
    45             ''' <summary>
    46             ''' 声明属性
    47             ''' </summary>
    48             ''' <remarks></remarks>
    49             Private _name As String
    50             Public Property Name() As String
    51                 Get
    52                     Return _name
    53                 End Get
    54                 Set(ByVal value As String)
    55                     Me._name = value
    56                 End Set
    57             End Property
    58 
    59             ''' <summary>
    60             ''' 声明方法
    61             ''' </summary>
    62             ''' <returns></returns>
    63             ''' <remarks></remarks>
    64             Public Function GetClassName() As String
    65                 Test1()
    66                 ModuleTest.Test2()
    67                 Return Me.GetType().ToString()
    68             End Function
    69 
    70             ''' <summary>
    71             ''' 实现接口中的方法
    72             ''' </summary>
    73             ''' <param name="obj"></param>
    74             ''' <returns></returns>
    75             ''' <remarks></remarks>
    76             Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
    77                 Return 1
    78             End Function
    79         End Class
    80     End Module
    81 End Namespace

    这里的代码只是纯粹为演示目的而写的,没有任何具体意义 。


    点关注,不迷路

    文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话 ~求点赞👍 求关注❤️ 求分享❤️ 
    各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

    展开全文
  • VB.NET中Module

    千次阅读 热门讨论 2013-07-26 09:18:34
    介绍VB.NET中Module的概念和使用

    1. 概念

    为什么会有模块的概念?

        在VB中有模块和类模块的概念,所谓模块就是存放公用的一些方法(Sub)或者(Function);而类模块,相当于我们经常说的类的概念。所以在VB.NET中也就有了Module的概念,它是继承下来的。但是在VB.NET里面Module有一些新的功能。

     1. 模块(Module)的方法特点:这些方法自动就是静态的(或者称为共享的——VB.NET中的关键字是Shared),这些方法可以直接调用,所以Module是无法实例化,也没有必要实例化的。

     2. 模块无法继承,也无法实现接口

     3. 每个模块均正好有一个实例,并且无需创建此实例或将其赋给变量。模块不支持继承,也不实现接口。请注意,从类或结构是类型这一意义上说,模块并非类型 - 您无法将编程元素声明为具有模块的数据类型。

     4. 在命名空间级别使用 Module。这意味着模块的声明上下文必须是源文件或命名空间,而不能是类、结构、模块、接口、过程或块。无法在一个模块或任何类型中嵌套另一个模块。

    2. 和Class的区别

     1. 术语。以前的 Visual Basic 版本识别两种类型的模块:类模块(.cls 文件)和标准模块(.bas 文件)。当前版本会分别调用这些类和模块。

     2. 共享成员。可以控制类的成员是共享成员还是实例成员。

     3. 面向对象。类是面向对象的,但模块不是。因此,只能将类实例化为对象。

    3. 使用示例

    模块的使用了类的使用区别其实不大,可以理解为一个不能够实例化的静态类,在里面我们可以定义一些全局变量和函数。在模块中定义全局变量,入口函数Main和其他共享或私有函数和方法,引用模块中定义的变量,函数和方法不需要进行New实例化。

    Module中创建了Main函数,程序Main()函数启动

    Public Module thisModule
        Sub Main()
            Dim userName As String = InputBox("What is your name?")
            MsgBox("User name is" & userName)
        End Sub
        ' Insert variable, property, procedure, and event declarations.
    End Module

    在Module中创建了一些全局变量和函数,调用这些变量和方法的时候不用New。

    Imports System
    Imports System.IO
    
    Public Module MyModule
        '定义全局变量
        '登陆的用户名和密码
        Public LoginID As String
        Public LoginPwd As String
    
        Public Sub AddOne(ByVal n As Integer)  '这里是函数AddOne的定义
            Console.WriteLine(n + 1)
        End Sub
    
        '函数是有返回值的。我们写一个函数,传入一个整数,函数返回这个数的加二。例如给它3,它返回5。
        Public Function AddTwo(ByVal n As Integer) As Integer
            Return n + 2        'return后面的表达式就是这个函数要返回的东西
        End Function
    
    End Module
    
    

    展开全文
  • VB的都知道,VBmodule就像一个全局文件,里面的函数、变量可以直接为主函数所用,现在有C#编了一段时间,在Form1.cs写了好多函数,整个代码都好乱,就想把一些边缘的函数放到另一个地方。方法如下: 新建一个...

    用VB、VB.NET了好长时间,最近转来学C#,突然没了module好不习惯。会VB的都知道,VB的module就像一个全局文件,里面的函数、变量可以直接为主函数所用,现在有C#编了一段时间,在Form1.cs中写了好多函数,整个代码都好乱,就想把一些边缘的函数放到另一个地方。方法如下:

    新建一个类文件class1.cs,把系统自己生成的代码改成:

     

    namespace MyNameSpace  
    { 
         public partial class Form1   
         {  
         }  
    }  
     

    然后在里面括号里写上一些想公用的函数代码就OK了。

    转载于:https://www.cnblogs.com/minemine/p/4983862.html

    展开全文
  • vb excel module

    2009-10-14 13:51:30
    excel module!vb export excel!
  • VB.net Module

    千次阅读 2013-09-04 22:47:35
    In this tutorial, we cover how to create a module, store information inside a module and then access that information in your application. A module can be used to store functions, subs or even variabl
  • VB6 module for VISA

    2009-03-02 19:19:18
    VB6 GPIB-VISA 通用模块 用于GPIB软体开发
  • VB.NET自定义类库(dll)的编写和引用的简单示例 DLL(动态链接库)是一个很有用的东西,比如说,你有一段经常要用到的代码,可以作为标准代码使用, 就可以把它封装成DLL文件,以后要用到的时候,只需要引用一下就...
  • VB模块 兼容广告设计经典代码Advertising design classic VB code module is compatible
  • vbmodule 和class module 有什么区别?

    万次阅读 2007-07-03 13:46:00
    标准模块与类模块的比较 在数据存储方式上,类不同于标准模块。标准模块的数据不可能多于一份... 应避免使类的代码依赖于全局数据─ 即标准模块的公共变量。一个类可能同时存在很多个实例,所有这些对象都共享部件
  • BAS Module Code Add the following code to a BAS module: -------------------------------------------------------------------------------- Option Explicit 注释:注释:注释:注释:注释:注释:注释:注释...
  • VB6(模块)的MD5哈希计算器。 您可以将模块添加到项目
  • 栈在vb.net中用stack类封装,里面还有泛型栈stack(of T) 什么叫做栈呢?就像装乒乓球的纸筒,每个乒乓球就是栈的元素,先装进去的乒乓球位于筒的底部,后面的位于顶部。 在.net里用push表示把元素入栈,即把乒乓球.....
  • 一、Module的由来  早先的VB语言都有模块和类模块的概念。...模块(Module)里面可以直接有方法,这些方法自动就是静态的(或者称为共享的——VB.NET的关键字是Shared),这些方法可以直接调用,所以Mo...
  • <Windows>> – Single-Instance Applications 这一章, 学到了调用 VB.Net 的 IsSingleInstance, 为 C# WinForm 添加只运行应用程序的单个实例 ( Single Instance Application). 是个好方法! 该方法显然从易用...
  • vb.net Function使用

    2018-07-10 13:36:00
    Public Function colour(ByVal Code As Int16) As Color'顏色 Select Case Code Case 1 colour = Color.White'白色 Case 2 colour = Color.Yellow'黃色 ...
  • VB standard-module bas文件 调用

    千次阅读 2013-05-20 14:38:52
    VB6.0,后缀为bas的文件称之为standard module(标准模板文件),这个文件其实就是一些函数,变量等的集合,是一个静态文件, 可以直接调用里面的函数等,调用前无须实例化等操作,也无须进行文件的include,因为...
  • 需要对下载下来的网页进行编码转换,将UTF-8转成Unicode新建一模块名为Module_UTF8:Option ExplicitPublic m_bIsNt As BooleanPublic Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As ...
  • VB.net中使用两种方法,实现32位MD5加密 实际使用时将该段代码直接加入module中
  • VB 查找函数Find

    2010-06-07 15:15:21
    VB 查找函数Find VB 查找函数Find VB 查找函数Find
  • [Ai-Thinker's new products release] It talks only seven days to realize the solution of offline voice . Start your smart home control ...VB-01/VB-02 realizes high-reliability wake-up recognition ra...
  • vb.net 使用odbc 数据源

    2021-02-04 23:20:25
    vb.net中使用odbc数据源。需要odbc.net的支持。1.下载ODBC.NET (FrameWork 2.0以上默认未安装)下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=6ccd8427-1017-4f33-a062-d165078e32b12.创建...
  • 1.设置从Model的Sub Main 启动2.程序结构3.Model1Imports System.Windows.Forms.ApplicationModule Module1Sub Main()'form1 是测试多文档窗口'Dim frm1 As New Form1()'frm1.Show()Dim formStudentSysMain As New...
  • 详解VB中系统热键使用

    千次阅读 2011-08-22 14:44:55
    If wParam = 1 Then '如果是本程序定义的(系统消息的wParam参数在热键消息代表热键标示符,是在RegisterHotKey注册热键的时候定义的一个整数,如果热键是系统定义的,则标示符取值为-1或-2,详见开头 Call ...
  • CopyPublic Function Switch( _ ... 要么全用If,要么如下修改 VB.NET code select case myrow1.Cells("积分").Value case 0 ... case 60 to 79 ... case 80 to 99 ... case is > 100 ... case else ... end select
  • Friend Const TH32CS_SNAPHEAPLIST = &H1 '在快照包含在th32ProcessID指定的进程的所有的堆。 Friend Const TH32CS_SNAPPROCESS = &H2 '在快照包含系统所有的进程。 Friend Const TH32CS_SNAPTHREAD = &H4 '...
  • 支持汉字的vb简单加密解密模块,可直接加载使用,适用于加密安全性不是很高的项目。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,687
精华内容 4,674
关键字:

vb中module的使用