如果代码看不懂,可以学习一下vb.net,vb.net视频教程

Visual Basic 2010 2012 2013 从入门到精通|xin3721自学网李天生老师亲自授课录制的,Visual Basic 2010 与 2012视频教程。https://www.xin3721.com/eschool/vbnetxin3721/

  很久以来,VB因为缺乏完善的面向对象支持、缺乏高效的错误处理机制和性能表现不佳,因而一直受到某些人的嘲笑。VB.NET将彻底改变这种情况。然而,VB.NET在这些方面的改进也要付出代价,许多旧的代码需要手工进行转换才能在VB.NET下运行。

  下面几个表格总结了VB.NET语言在语法上的改动之处。注意这些表格并没有完全列出所有改动之处,但列出了最重要的一些改动。

  表A对比了VB6中一些熟悉的语法形式及其在VB.NET中类似功能最接近的语法形式。

  表A:语法对比旧语法 新语法 说明窗体装载事件,类初始化事件 Sub New procedure Sub New称为构造方法(Constructor),它可以有参数。

  Property Let Property Set Let关键词不再有效。

  Currency Decimal 在VB6中,Decimal是Variant的一种子类型,但在。NET中它是一种固有的数据类型。。NET不再支持Currency数据类型。

  Variant Object VB.NET的Object数据类型兼有VB6 Object类型和Variant类型的能力。

  Debug.Print Debug.Write Debug.WriteLine 这个变化只是名称上的简单变化:从Print变为Write和WriteLine. Wend End While VB.NET推荐使用While循环而不是Do循环。

  

  为了让VB的数据类型和其他。NET语言的数据类型相匹配,Microsoft修改了整数类数据类型的表示方法,并加入了一个新的数据类型。这些改动对于进行外部调用的方法尤其重要(比如API调用)。例如,如果被调用函数需要一个32位的整数参数,则在VB6中它应该声明为Long,在VB.NET中应该声明为Integer.

  表B:和整数有关的数据类型长度 VB6以及更早版本中的名称 VB.NET中的名称16 bit Integer Short 32 bit Long Integer 64 bit (无) Long

  

  在VB.NET中,Microsoft减少了许多原先用于VB6的关键词,代之以“框架类”。之所以要进行这种替换,是因为框架类中的功能对所有的.NET语言都有效。下表列出了部分受影响的关键词。

  表C:被替换的关键词
VB关键词 VB.NET名称空间中的位置 方法/属性

Circle System.Drawing.Graphics DrawEllipse

Line System.Drawing.Graphics DrawLine

Atn System.Math Atan

Sgn System.Math Sign

  Sqr System.Math Sqrt

Rnd Microsoft.VisualBasic.Compatibility.VB6 Rnd

Round Microsoft.VisualBasic.Compatibility.VB6 Round

Lset System.String PadRight

Rset System.String PadLeft

DoEvents System.Winforms.Application DoEvents

VarType System.Object GetType(返回类Type的对象,其中包含了可提取出信息的属性)

  
 在VB.NET中,变量、数组的声明和初始化方法都有所变化,下表概要地列出了VB.NET在这方面的变化。

  表D:新的声明方法
变化 语法举例
单个声明语句中不能声明多种类型。 'VB.NET不允许出现下面这种声明!
Dim nCount As Integer, bAnswer As Boolean
声明变量时可赋予初始值 Dim nCount As Integer = 20
Dim nDoubleCount as Integer = nCount * 2
允许为数组元素指定初始值 Dim nIndex(3) As Integer = (3, 5, 7)
不能用Redim进行声明,只能用Redim重新定义数组大小。 '下面这行代码在VB.NET中不合法!
Redim sName() As String

  
大量新关键词实现了VB.NET中的新功能。下面是一些最重要的关键词及其用途、用法简例。

  表E:VB.NET的新关键词
关键词 用途 简单例子
Inherits 指向基类,用于实现继承。 Inherits System.WinForms.Form
MyBase 在子类的代码中,MyBase引用基类。 StringProperty = MyBase.StringProperty
Shared Shared表示类的所有实例共享类里面的变量。 Public Shared BaseLocation As String
Try
Catch
Finally
Throw 这是新的错误处理关键词。Try开始一个启用错误控制的代码块,Catch标识一个对特定错误进行处理的代码块,Finally开始一个不管错误是否出现都必须执行的代码块,Throw抛出一个错误(类似于VB6的Err.Raise)。 Try
rsRecordset.Update
Catch
LogError ("更新失败!")
Finally
rsRecordset.MoveNext
End Try
ReadOnly 在属性声明中,ReadOnly指示一个只读的属性(只有Get过程的属性)。 Public ReadOnly Property
StringProperty() As String
WriteOnly 在属性声明中,WriteOnly指示一个只能写入的属性(只有Set过程的属性)。 Public WriteOnly Property
StringProperty() As String
Char 这是VB.NET中的单字符数据类型。 Dim chrInitial As Char
Imports 在当前代码模块中引入指定类。 Imports System.WinForms
Namespace 为模块指定名称空间(Namespace)。 Namespace MyApplicationName
Overloads 重载。Overloads表示同一个函数名字有多个版本的实现,编译器通过函数的参数列表区分它们。 '同一个模块之内包含如下多个声明...
Overloads Sub Display(sIn as String)
Overloads Sub Display(nIn as Long)
Overrides 覆盖。Overrides表示成员函数覆盖当前类所继承的基类中的指定方法。 Inherits MyBaseClass
Overrides Function Name(nID as Long) _
As String
Overridable Overridable表示任意从当前类继承的类都可以覆盖指定成员函数。 Overridable Function Name _
(nID as Long) As String
MustOverride MustOverride表示任意从当前类继承的类都必须覆盖指定成员函数。 MustOverride Function Name _
(nID as Long) As String

  Protected Protected表示成员函数只能从当前类的派生类访问。 Protected Sub Clear()

  在以前的VB中,直至VB 4为止, Let、Set和Get属性过程是分离的。VB.NET把同一属性的属性过程放到了一起:

  
Private msMyStringProperty As String
' 声明区
Public Property MyStringProperty As String
Get
MyStringProperty = msMyStringProperty
End Get

  Set
msMyStringProperty = MyStringProperty
End Set
End Property

  
VB.NET不再有Let属性过程,因为所有赋值语句的语法(无论是对象还是非对象)都已经一样。

  语言方面的改动远远超过了对体系结构的改动。对于大多数人来说这些改动都有意义,但仍有人对某些改动存有异议。例如,在以前的版本中,许多任务可以用多种不同的方法完成,统一的编码标准要么不存在,要么很难执行。为了“清理”VB语言,Microsoft对VB作了一些重大的改动,许多以前可以有多种实现方法的任务现在只有一种方法。

  除了前面几个表格列出的内容之外,下面是一些特别需要注意的地方。

  首先,向过程参数传递数据的默认方式由原来的传递引用(ByRef)变成了传递值(ByVal),这是一个很重要的改动。通过引用传递参数比通过值传递参数面临着更多的危险,这种危险在于被调用过程可能无意地改变参数的值。VB.NET仍旧允许以引用方式传递参数,但默认参数传递方式的改变意味着程序必须作相应的调整。

  第二,VB.NET中不再有Set语句,把对象引用赋给变量现在只需一个等号就可以了,对象可以象任何其他值一样对待。虽然省略Set简化了代码,但也有一个附带的影响:默认属性不再有效。例如,下面这种属性值引用方法不再合法:

  Text1 = "这是对象的默认属性值。"

  相反,属性值必须按照如下方式显式引用:

  Text1.Text = "这是对象的默认属性值。"

  从表面上看来,VB.NET作这种要求似乎没有必要。但事实上,它对于摆脱默认属性来说却是必要的。例如,假设有一个名字为objFoo的对象变量,由于没有了Set语句,假若属性值仍旧可以象原来一样引用,下面这个语句到底是什么意思就很难确定了:

  objFoo = Text1

  这个语句是设置了一个对Text1的引用,还是把Text1的Text属性值赋给了objFoo?我们无法作出判断,编译器也同样不能判断。因此,抛弃Set语句也就意味着必须放弃默认属性值。

  。NET中最不让人喜欢的改动:Microsoft改变了一些早就在使用的数据类型的含义。在。NET中,Integer变成了32位,而Long则是64位。可以想象,这种改变将导致程序员频繁地用错变量类型。例如,调用某个API函数时应该使用16位的Integer还是使用32位的Integer?但愿Microsoft能够重新考虑这个决定,采用一些新的变量类型名字,如Int32和Long64.

  VB.NET引入了Option Strict关键词。Option Strict关键词用于替代Option Explicit.原来的VB允许把一个数字值赋给字符串变量,或者进行其它类似的不正常赋值操作,Option Strict结束了这种情况。声明Option Strict告诉Visual Basic.NET不要进行任何强制的类型转换。当然,VB.NET也不是完全限制了类型自动转换:它允许进行向下的自动类型转换(Cast),但不支持向上的自动类型转换。例如,如果不是使用“sngvariable = CSng(dblvariable)”这类语句进行显式的类型转换,声明为Single的变量不能设置为Double变量的值,因为它可能导致数据丢失;然而,Double变量可以直接设置为Single类型变量的值,且无需显式地进行类型转换,因为这里不存在数据丢失问题。使用Option Strict能够帮助开发者减少许多错误,包括许多难以调试的错误。附带说明:使用Option Strict时不允许再使用延迟绑定。

VB.NET语法基础学习相关推荐

  1. VB学习过程(二)VB的语法基础和常用的内部函数

    2013/11/01                   转载请注明出处:http://blog.csdn.net/lxk7280 语法基础: (1)顺序结构 Private Sub Form_Loa ...

  2. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  3. java eight,Java语法基础学习DayEight

    一.异常处理 1.结构 java.lang.Object |-----java.lang.Throwable |-----java.lang.Error:错误,java程序对此无能为力,不显式处理 | ...

  4. Java语法基础学习笔记05-1-循环案例+嵌套for-重点

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单层for循环案例代码 二.for循环嵌套 1.图形打印 1.1**矩形 1.2**直角三角形 1.3**倒直角三 ...

  5. 语法基础(Java)

    Java语法基础 学习目标 Java中的数据类型 变量与常量 运算符 数据类型: 基本类型: 类型 默认值 位长 取值范围 boolean(布尔型) false 1 false,true byte(字 ...

  6. 掉进悬崖的小白,捡到python基础秘籍,学习第一周——语法基础,小游戏,无脑循环

    掉进悬崖的小白,捡到python基础秘籍,学习第一周--语法基础,小游戏,无脑循环 人生苦短,我用python 语言的种类: 语言的发展: 什么是python 搭建 Python开发环境: 集成开发环 ...

  7. IDL学习:语法基础-指针、链表

    本博客将介绍IDL语法基础中的指针.链表的创建及相关的用法.记录自己的学习+整理+理解 . 1. 指针 指针也就是内存地址,是用来存放内存地址的变量,指针可以理解为通讯地址,可以通过通讯地址查询具体的 ...

  8. 【Python百日基础系列】Day02-Python语法基础

    Python百日基础系列 视频讲解2-1 [Python百日基础系列]02-Python语法基础-1 视频讲解2-2 [Python百日基础系列]02-Python语法基础-2 文章目录 Python ...

  9. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

最新文章

  1. ZYNQ EMIO使用及可重用封装
  2. php有意思知识分享,分享几个有意思的数组方法
  3. vba 单元格 一系例操作
  4. PostgreSQL学习笔记7之函数和操作符三
  5. 手动实现SPring中的AOP(2)
  6. Css颜色和文本字体
  7. Hive报错:Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
  8. getobject java,Object get(Object obj)
  9. python查看内置模块,python快速查看内置模块函数
  10. mysql 事务日志备份_SQL Server恢复模式与事务日志备份
  11. 操作系统原理(七)文件系统
  12. 甘肃刘家峡赤壁“结”出多彩冰瀑
  13. DNF服务器搭建服务端架设教程
  14. JAVA版村庄哨塔种子_开局5钻石!你的java版种子到了,请查收
  15. overflow解决float浮动后高度自适应问题
  16. 详解 python 的 切片
  17. Python将pdf转为png
  18. Ubuntu安装GVM-11并使用gvm-tools命令行方式通讯
  19. Haproxy基础知识 -运维小结
  20. 网络安全入门:什么是防火墙,防火墙有哪些功能

热门文章

  1. php生成表格数据类型,phpspreadsheet 中文文档(四) 创建电子表格+档案格式
  2. CWE-416: Use After Free(释放后使用)
  3. CentOS7使用yum安装MySQL——指定版本
  4. 调试qbo_video_record问题
  5. 人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”
  6. Jfrog 搭建本地maven仓库以及上传Android库
  7. 基于CS16312控制芯片的VFD显示屏STC51单片机驱动程序
  8. 软考 程序员教程-第三章 数据库基础知识
  9. jsp简介及工作原理
  10. 将数据库中的数据转换成json格式