VB.NET模块的总结(一)精简版

简介:
Module Module1
  Public aNew As String  '全局公共成员变量,可以在当前项目的任何类和模块中引用
  'Dim aNew As String  '模块的成员变量(字段)绝对不会出现形如:Public Dim aNew As String 的声明
  Sub Main()
    Console.WriteLine("hello, word!")
    aMethod()
    Console.WriteLine(addTwoNumber(1, 9))
    textInputBoxAndMsgBox()
    Dim TestWu As New SubNewClass()
    Console.WriteLine(TestWu.testSubNew)
    Dim TestYou As New SubNewClass("调用有参数构造器")
    Console.WriteLine(TestYou.testCanShuSubNew)
    Console.ReadKey()
  End Sub
  'Protected Sub aMethod()  '错误
  'Shared Sub aMethod()     '错误
  Private Sub aMethod()
    Console.WriteLine("aMethod")
  End Sub
  Sub New() '构造函数
    aNew = "用构造函数初始化aNew成员变量(字段)"
    Console.WriteLine(aNew)
  End Sub
  'Private Function addTwoNumber(ByVal a, ByVal b) As Integer  '如果在模块的开始加上了Option Strict On ,则会产生错误,错误提示为: Option Strict On 要求所有变量声明都有“As”子句,如果在模块的开始加上了Option Strict Off或者什么都不加, 则可以通过。
  Public Function addTwoNumber(ByVal a As Integer, ByVal b As Integer) As Integer  '和过程一样,同样不能用Protected和Private修饰函数
    'Return a + b '与下面等价
    addTwoNumber = a + b '与上面等价,这个是VB6返回值的语法,直接让函数名等于返回值
  End Function
  Sub textInputBoxAndMsgBox() '测试InputBox和MsgBox函数
    Dim userName As String
    userName = InputBox("请输入一个名字:", "测试InputBox和MsgBox")
    MsgBox(userName, , "测试InputBox和MsgBox")
  End Sub
End Module
Class SubNewClass
  Private _testSubNew As String = "调用默认构造函数(即无参数构造函数)" '为配合属性定义的
  Public testCanShuSubNew As String '一个公共字段,可以在该类外面被访问
  Sub New() '无参数构造器
  End Sub
  Sub New(ByVal X As String) '有参数构造器
    Me.testCanShuSubNew = X
  End Sub
  Public Property testSubNew() As String  '定义一个属性
    Get
      Return _testSubNew
    End Get
    Set(ByVal value As String)
      _testSubNew = value
    End Set
  End Property
End Class
'VB中的过程包裹子过程(Sub)和函数过程(Function),其实完全可以把过程称为方法或者函数
'过程和函数都可以接受参数
'过程(又称子过程)不能有返回值 
'函数(又称函数过程)可以有返回值,而且返回值加在函数声明的后面,用As实现
'VB中的类默认提供一个无参数构造器,所以你不必在代码里显示定义一个无参数构造器就可以用无参数构造器实例化该类。但一旦在类中定义了一个有参数构造器,你就必须显示定义一个
'无参数构造器,才能用无参数构造器实例化该类
'模块可以有构造函数,该构造函数在Main函数中会最先被执行
'模块不能实例化 模块不可继承 模块被隐式的共享(内部成员都是Shared类型,相当与C#中的static)
'模块的成员不用提供Module名称就可以被访问。既你可以直接用成员的名字访问该成员
'模块的成员是全局共享的,你可以在程序的任意位置访问这些成员
'带有Mani()方法的模块可被编译成EXE文件,而不需要提供任何额外的信息指定应用程序的入口点
'模块可以有Main()函数也可以没有Main()函数
'通过模块的全局成员变量,我们可以实现B/S结构里面的Session,来判断用户的登陆状态,这个我已经在一个项目实现
'后记:因为以前有过VB6的开发经验,我觉得VB.NET中的模块是为了最大限度的兼容VB6而保留的,不过就模块式编程来说,我还是比较喜欢,C#中没有模块的实现,而VB.NET满足了的体验















本文转自terryli51CTO博客,原文链接: http://blog.51cto.com/terryli/520605,如需转载请自行联系原作者


相关文章
|
4月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进 - 注意力机制】HCF-Net 之 DASI: 维度感知选择性整合模块 | 小目标
YOLO目标检测专栏介绍了HCF-Net,一种针对红外小目标检测的深度学习模型,包含PPA、DASI和MDCR模块。PPA利用多分支注意力捕获多层次特征,DASI实现自适应特征融合,MDCR通过深度可分离卷积细化空间特征。HCF-Net在SIRST数据集上的实验超越其他模型。论文和代码可在提供的链接中找到。DASI模块通过信道分区选择机制动态融合高维和低维特征。YOLOv8引入了DASI结构,结合不同尺度特征以增强小目标检测。更多配置细节参见相关链接。
|
4月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
6月前
|
机器学习/深度学习 编解码 算法
Yolov5改进算法之添加Res2Net模块
Res2Net(Residual Resolution Network)是一种用于图像处理和计算机视觉任务的深度卷积神经网络架构。它旨在解决传统的ResNet(Residual Network)存在的问题,如对不同尺度和分辨率特征的建模不足以及网络深度受限的问题。Res2Net通过引入多分支的结构和逐级增加的分辨率来提高网络的表达能力,从而在各种视觉任务中取得了显著的性能提升。
392 0
|
JavaScript
|
消息中间件 Cloud Native 安全
.NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 详解)--学习笔记
Consumer 消费者 Producer 生产者 Request-Response 请求-响应
355 1
.NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 详解)--学习笔记