VB.NET中Module的概念
今天学习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代码范例:
'用命名空间封装Module
Namespace VBModuleTest
''' <summary>
''' 模块无法继承,无法实现接口
''' </summary>
''' <remarks></remarks>
Module ModuleTest
''' <summary>
''' 模块里面的方法都是静态的,无需实例化,也无从实例化
''' </summary>
''' <remarks></remarks>
Sub Main()
'new一个Class1实例
'Dim clazz As Class1 = New Class1这样也是对的
Dim clazz As Class1 = New Class1()
clazz.Name = "Class1类"
Console.WriteLine(clazz.Name)
Console.WriteLine(clazz.GetClassName())
Console.ReadKey()
End Sub
''' <summary>
''' 有返回值的方法,用Function来声明
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function Test1() As String
Console.WriteLine("这个是Module里面的Test1方法")
Return ""
End Function
''' <summary>
''' 无返回值的方法,用Sub来声明
''' </summary>
''' <remarks></remarks>
Public Sub Test2()
Console.WriteLine("这个是Module里面的Test2方法")
End Sub ''' <summary>
''' 类型可以放在模块里面,但主要的现实意义在于分类存放而已,放在模块里面并不影响该类型对外的引用。
''' 例如我们并不一定需要用VBModuleTest.ModuleTest.Class1,
''' 而是直接通过VBModuleTest.Class1就可以对其进行引用
''' </summary>
''' <remarks></remarks>
Public Class Class1 : Implements IComparable
''' <summary>
''' 声明属性
''' </summary>
''' <remarks></remarks>
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
Me._name = value
End Set
End Property ''' <summary>
''' 声明方法
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetClassName() As String
Test1()
ModuleTest.Test2()
Return Me.GetType().ToString()
End Function ''' <summary>
''' 实现接口中的方法
''' </summary>
''' <param name="obj"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
Return
End Function
End Class
End Module
End Namespace
这里的代码只是纯粹为演示目的而写的,没有任何具体意义 。
VB.NET中Module的概念的更多相关文章
- VB.NET中的模块
在C#中有“静态类”的概念,自然里边全部的方法都是静态的.这意味着你可以直接通过"类名.方法名"去调用(例如System的Math类就是典型).在VB.NET中,没有“静态类”的概 ...
- PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...
- vb.net中存储过程的使用
在机房收费系统过程中,试着使用了存储过程,离之前数据库的学习已经有些日子了.之前对于存储过程的了解也是听过而已,非常不清楚.因此,写这篇博客! 专业概念:存储过程是一个SQL语句和控制结构的集合,创建 ...
- 如何理解VB窗体中的scale类属性及width height属性之间的关系
如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...
- Python中类型的概念(一)
本课程主要介绍6种Python语言中的类型:数字类型.字符串类型.元组类型.列表类型文件类型.字典类型 1.数字类型 Python语言包括三种数字类型:整数类型.浮点数类型.复数类型 (1)整数类型 ...
- idea使用教程-Module的概念和使用
一.IDEA页面展示 [1]项目下内容: ➢工程下的src类似于Eclipse下的src目录,用于存放代码.. ➢工程下的.idea 和TestProject.iml文件都是IDEA工程特有的.类似于 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- VB.NET中图像处理的一些技巧以及其和C#图像处理的差距。
早期的时候我使用的开发工具是VB6,VB6做图像处理的速度在我的软件Imageshop中有所体现,还是算可以的.目前,我已经改用C#来研究图像算法,C#中有指针,做图像处理起来效率确实要高不少.VB. ...
- WebLogic 中的基本概念
完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...
随机推荐
- git merge branch to master
git checkout master git pull git merge testbranch git push
- MySql 死锁时的一种解决办法【转】
转自:http://blog.csdn.net/mchdba/article/details/38313881 之前也遇到一次,今天又遇到了这个问题,所以这次必须解决,网上找到这篇文章帮了大忙,方便以 ...
- pip 18.1: pipenv graph results in ImportError: cannot import name 'get_installed_distributions'
I'm currently using python3 -m pip install pip==10.0.1python3 -m pip install pipenv==2018.5.18 Once ...
- lombok使用说明
简介lombok 的官方网址:http://projectlombok.org/lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 POJO, ...
- 基于Apache在本地配置多个虚拟主机站点
简单的说,打开httpd.conf 在最后加入如下内容: <VirtualHost 127.0.0.2:80> DocumentRoot d:/AppServ/www2 Ser ...
- 设置文字小于12px
问题:有时候会需要设置一些小于12px的字或是icon: 方法:使用css3的transform的scale,来放大和缩小,但是相应的容器也会缩小 transform: scale(0.6);
- asp.net 文件下载显示中文名称
protected void Page_Load(object sender, EventArgs e) { string guid = Request.QueryString[& ...
- 字符串格式化格式 -- Numeric Format Strings
- django用户系统的测试,蛮不错的。
https://blog.csdn.net/orangleliu/article/details/51944758 这个很实用 https://www.cnblogs.com/yanhuidj/p/1 ...
- PyTorch-Kaldi 语音识别工具包
翻译: https://arxiv.org/pdf/1811.07453.pdf ABSTRACT 开源软件的可用性在语音识别和深度学习的普及中发挥了重要作用.例如,Kaldi 现在是用于开发最先进 ...