VB.NET模块的总结(二)

简介:
'Module1.vb文件中的代码:
Module MainClas
  Sub Main()
    Dim theFirstInstanceOfTestscope As New TestScope
    theFirstInstanceOfTestscope.TestScopeSubMethodOne()
    Dim aStr As String = theFirstInstanceOfTestscope.TestScopeFunctiongMethodOne()
    Console.WriteLine(aStr)
    Dim theFirstInstanceofOutTestScope As New OutTestScope()
    '同上作用一样,实例化OutTestScope类
    'Dim theFirstInstanceOfOutTestScope As OutTestScope
    'theFirstInstanceOfOutTestScope = New OutTestScope()
    '同上作用一样,实例化OutTestScope类
    'Dim thefirstinstanceofouttestscope = New OutTestScope()
    theFirstInstanceofOutTestScope.OutTestScopeSubMethodOne()
    Dim aaStr As String = theFirstInstanceofOutTestScope.OutTestScopeFunctiongMethodOne()
    Console.WriteLine(aaStr)
    Console.WriteLine(theFirstInstanceofOutTestScope.cc)
    theFirstInstanceOfTestscope.DiaoYongMMethod() '通过类的实例调用其他模块的方法
    Dim mTwoClassFiled As New mTwoClass
    mTwoClassFiled.mTwoClassMethod() '模块直接调用其他模块的类中的方法
    Console.WriteLine(mThreeMethod()) '模块直接调用其他模块的方法
    Console.ReadLine()
  End Sub
End Module

Class TestScope
  Dim a As String
  Private b As String
  Public c As String
  Sub New() '无参数构造函数
    Me.a = "Dim_a"
    Me.b = "Private_b"
    Me.c = "Public_c"
  End Sub
  'Public Static Sub TestScopeMethodOne()  '不能用Static去声明Sub方法(或者Sub过程),提示错误:方法不能声明为“Static”
  Public Sub TestScopeSubMethodOne()
    Console.WriteLine(String.Format("TestScopeSubMethodOne():{0} {1} {2}", a, b, c))
  End Sub
  'Public Static Function TestScopeFunctiongMethodOne() As String  ''不能用Static去声明Function方法(或者Function函数),提示错误:方法不能声明为“Static”
  Public Function TestScopeFunctiongMethodOne() As String
    Return String.Format("TestScopeFunctiongMethodOne():{0} {1} {2}", a, b, c)
  End Function
  Public Sub DiaoYongMMethod()
    'mTwoMethod()
    Console.WriteLine(mThreeMethod())
  End Sub
End Class
Module mTwo
  'Public Sub mTwoMethod()
  Private mTwoFiled As String = "mTwoFiled"
  Private Sub mTwoMethod()  '模块中的方法可以用Private修饰,但只能在当前模块中使用,不能在其他模块中使用
    Console.WriteLine(mTwoFiled)
  End Sub
  Class mTwoClass
    Sub mTwoClassMethod()
      mTwoMethod()
    End Sub
  End Class
End Module
Module mThree
  Private Sub mPrivateThreeMethod()
    Console.WriteLine("mPrivateThreeMethod()")
  End Sub
  'Public Function mThreeMethod() As String
  Function mThreeMethod() As String '模块中的方法隐士共享,可以在模块外部访问,加不加Public都一样
    mPrivateThreeMethod()
    Return "mThreeMethod()"
  End Function
End Module
'在vb.net中不能用static来声明方法(Sub和Function),并且不能用来声明成员变量,只能用来声明方法(Sub和Function)中的静态变量。   
'shared既可以用来声明变量也可以用来声明方法,还可以用来声明成员变量,这一点刚好跟static相反。
'vb.ne中的shared更像C#中static的作用。在vb.net中用shared声明的成员变量(字段)和方法(Sub和Function),只能用类名来访问,而不能用类的实例来访问
'一个文件中可以定义多个模块
'可以像C#一样在另一个文件中定义一类,该类的用法和在一个文件中定义的类的用法相同(包裹字段,方法,属性等等都一样)
'模块中的方法隐士共享,可以在模块外部(其他模块,类,结构等)被直接访问,加不加Public都一样
'模块中的方法不能声明为Protected,Shared和Static,只能声明为Public(默认就是Public)和Private。
'但模块中类(或者结构)的方法可以声明为Public,Private,Protected和Shared。
 
'OutTestScope.vb文件中的代码:
Public Class OutTestScope
  Dim aa As String
  Private bb As String
  Public cc As String
  Sub New() '无参数构造函数
    Me.aa = "Dim_aa"
    Me.bb = "Private_bb"
    Me.cc = "Public_cc"
  End Sub
  'Public Static Sub TestScopeMethodOne()  '不能用Static去声明Sub方法(或者Sub过程),提示错误:方法不能声明为“Static”
  Public Sub OutTestScopeSubMethodOne()
    Console.WriteLine(String.Format("OutTestScopeSubMethodOne():{0} {1} {2}", aa, bb, cc))
  End Sub
  'Public Static Function TestScopeFunctiongMethodOne() As String  ''不能用Static去声明Function方法(或者Function函数),提示错误:方法不能声明为“Static”
  Public Function OutTestScopeFunctiongMethodOne() As String
    Return String.Format("OutTestScopeFunctiongMethodOne():{0} {1} {2}", aa, bb, cc)
  End Function
End Class












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

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