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满足了的体验
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值