今天学习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的概念的更多相关文章

  1. VB.NET中的模块

    在C#中有“静态类”的概念,自然里边全部的方法都是静态的.这意味着你可以直接通过"类名.方法名"去调用(例如System的Math类就是典型).在VB.NET中,没有“静态类”的概 ...

  2. PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念

    PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...

  3. vb.net中存储过程的使用

    在机房收费系统过程中,试着使用了存储过程,离之前数据库的学习已经有些日子了.之前对于存储过程的了解也是听过而已,非常不清楚.因此,写这篇博客! 专业概念:存储过程是一个SQL语句和控制结构的集合,创建 ...

  4. 如何理解VB窗体中的scale类属性及width height属性之间的关系

    如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...

  5. Python中类型的概念(一)

    本课程主要介绍6种Python语言中的类型:数字类型.字符串类型.元组类型.列表类型文件类型.字典类型 1.数字类型 Python语言包括三种数字类型:整数类型.浮点数类型.复数类型 (1)整数类型 ...

  6. idea使用教程-Module的概念和使用

    一.IDEA页面展示 [1]项目下内容: ➢工程下的src类似于Eclipse下的src目录,用于存放代码.. ➢工程下的.idea 和TestProject.iml文件都是IDEA工程特有的.类似于 ...

  7. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  8. VB.NET中图像处理的一些技巧以及其和C#图像处理的差距。

    早期的时候我使用的开发工具是VB6,VB6做图像处理的速度在我的软件Imageshop中有所体现,还是算可以的.目前,我已经改用C#来研究图像算法,C#中有指针,做图像处理起来效率确实要高不少.VB. ...

  9. WebLogic 中的基本概念

    完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...

随机推荐

  1. MySQL 5.6 Replication 复制 FAQ

    原文请参照MySQL官方文档Reference Manual,版本5.6.10. 复制功能使得数据可以从一个MySQL数据库(master主库)复制到另一个或多个MySQL数据库(slave从库).缺 ...

  2. elasticsearch常见异常及解决办法

    报错信息:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 20602552 ...

  3. js中apply的用法(转)

    之一------(函数的劫持与对象的复制)关于对象的继承,一般的做法是用复制法: Object.extend见protpotype.js 的实现方法: Object.extend = function ...

  4. cas:覆盖安装

    1.首先到github上下载最新的模板代码 https://github.com/apereo/cas-overlay-template 下载完成后,导入该工程. 2.编译打包 cd cas-over ...

  5. sonar Lint ----code bad smell

    类名注释报黄: 去掉这段黄做法:alt+enter 本文参考: http://www.cnblogs.com/xxoome/p/6677170.html

  6. sublime text2快捷键

    mac: command+option+f : 替换, find what: (.*) replace with:"$1": "1"     或者: data: ...

  7. css实现导航切换

    css实现导航切换 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <title>css实现导航切换&l ...

  8. 安装配置tomcat,java运行环境

    1.下载JDK,安装 官网下载地址:http://java.sun.com/javase/downloads/index.jsp 下载后,安装,选择你想把JDK安装的目录: 比如:JDK安装目录:E: ...

  9. transform:rotate/旋转

    <!DOCTYPE html> <html> <head> <style> div { width:100px; height:75px; backgr ...

  10. Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)

    一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...