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的资料,会陆续的发出来, ...
随机推荐
- 高通Trustzone and QSEE介绍
http://blog.csdn.net/iamliuyanlei/article/details/52625968
- 洛谷P4549裴蜀定理
传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...
- vscodes使用(一): 常用插件,在线与离线安装
一.常用插件 1.Live server 浏览器实时刷新 插件安装成功后,会在底部工具栏中,显示个Go Live *.html文件,点击右键,可以看到live server两条指令 2.Esasy ...
- python标准模块(下)
Python 系统标准模块(shutil.logging.shelve.configparser.subprocess.xml.yaml.自定义模块) 目录: shutil logging模块 she ...
- C#用Oracle.DataAccess中连接Oracle要注意版本问题!
客户端Oracle.DataAccess.dll与服务器版本不一致时,如下修改:1.在客户端Web.config中,增加如下配置:<runtime> <assemblyBinding ...
- Git(五)IDEA应用Git
一.IDEA客户端git 1.提交代码到本地仓库 1. 关联Git,创建本地库 关联git 配置git环境变量 设置本地仓库目录,一般是IDEA工作空间,选择VCS->Import into V ...
- js变量和函数声明的提升(转)
原文:http://zha-zi.iteye.com/blog/2037026 下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var fo ...
- python3之Django模型(一)
1.模型概述 模型是关于您的数据的唯一,明确的信息来源,它包含您正在存储的数据的重要字段和行为.通常,每个模型映射到单个数据库表. 每个模型都是一个子类的python类django.db.models ...
- 什么是新生代 GC 和老年代 GC
GC 经常发生的区域是堆区,堆区还可以细分为新生代.老年代 jvm堆示意图 新生代 一个 Eden 区 两个 Survivor 区 老年代 默认 新生代(Young)与老年代(Old)的比例的值为 1 ...
- Swift map filter reduce 使用指南
转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...