VB.NET编程语言入门指南
语言概述
++Visual Basic.NET是由Visual Basic发展而来,实现了从基于对象编程到完全面向对象的变革,是构建于.NET Framework之上的编程语言,它对原版本进行了一些升级和增强,能提高日常开发效率,且适应其开发环境后,可使用同样工具为其他.NET语言编写程序。++
基础内容
-
变量与数据类型:变量的声明和使用是编程基础,需选择合适的数据类型。若不提供数据类型,则指定变量为缺省类型。
-
运算符:用于执行各种运算操作,如算术运算、逻辑运算等。
-
流程控制 :包括条件语句(如
If...Then...Else)和循环语句(如For、While),用于控制程序执行流程。 -
类和对象:作为完全面向对象的语言,类是对象的抽象定义,对象是类的实例,通过类和对象可实现封装、继承和多态等面向对象特性。
-
事件驱动编程:VB.NET支持事件驱动编程,程序的执行流程由事件触发决定,如按钮点击事件等。
基础语法
- 变量声明 :使用
Dim关键字声明变量,同时可指定数据类型。示例:
vbnet
Dim num As Integer
num = 10
-
数据类型 :包含
Integer(整数)、String(字符串)、Boolean(布尔值)等常见类型。 -
运算符 :有算术运算符(
+、-、*、/)、逻辑运算符(And、Or、Not)等。 -
流程控制语句:
- 条件语句 :
If...Then...Else用于条件判断。示例:
- 条件语句 :
vbnet
If num > 5 Then
Console.WriteLine("num大于5")
Else
Console.WriteLine("num小于等于5")
End If
- **循环语句**:`For`、`While`等用于循环操作。例如`For`循环:
vbnet
For i As Integer = 1 To 5
Console.WriteLine(i)
Next
示例代码
以下是一个简单的VB.NET控制台程序示例,用于输出"Hello, VB.NET!":
vbnet
Module Module1
Sub Main()
Console.WriteLine("Hello, VB.NET!")
Console.ReadLine()
End Sub
End Module
面向对象编程
- 类和对象:类是对象的抽象定义,对象是类的实例。示例:
vbnet
Public Class Person
Public Property Name As String
Public Property Age As Integer
Public Sub New(name As String, age As Integer)
Me.Name = name
Me.Age = age
End Sub
Public Sub Introduce()
Console.WriteLine("我叫 " & Name & ",今年 " & Age & " 岁。")
End Sub
End Class
Module Module1
Sub Main()
Dim p As New Person("张三", 20)
p.Introduce()
End Sub
End Module
- 封装、继承和多态:封装控制类成员的访问;继承使一个类可继承另一个类的属性和方法;多态允许不同类的对象对同一消息有不同响应。
事件驱动编程
VB.NET支持事件驱动编程,程序执行由事件触发。如Windows窗体应用程序中按钮的点击事件:
vbnet
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MessageBox.Show("按钮被点击了!")
End Sub
End Class
常见出错问题
数据库连接与操作出错
在进行数据库操作时,常出现连接或查询语句方面的错误。例如以下代码:
vbnet
Dim strcn1 As String = "workstation"
Dim str1 As String = "SELECT a.* ,b.jyrq ,b.qty FROM TTI_LLJYBG b ,tti_lljymx a where a.jydh=b.jydh"
Dim da As New SqlDataAdapter(str1, strcn1)
Dim ds As New DataSet
Dim cmd As New SqlCommand
Private Sub Form1_Load(...)
da.Fill(ds, System.Data.SqlClient.SqlException) ' 此句易出错
DataGrid1.DataSource = ds.Tables("tti_lljybg")
End Sub
问题可能出在数据库连接字符串、查询语句或数据库本身。若把查询语句改为简单的select * from tti_lljybg仍出错,且连接本地数据库正常,可能是服务器端数据库存在问题,需检查数据库连接是否正确。
类型转换错误
在处理数据类型转换时会出错。如在Oracle数据库操作中:
vbnet
' 当a = cm.ExecuteOracleScalar() 出错:从类型OracleNumber到Integer的转换无效
' 当a=cm.ExecuteScalar()正确通过
++这里使用ExecuteOracleScalar方法返回OracleNumber类型,不能直接转换为Integer类型,而ExecuteScalar方法返回合适类型,避免了转换错误。++
组件使用错误
使用组件(如Word.dll)时会遇到问题。例如:
vbnet
Dim wapp As Word.Application = New Word.Application()
Dim adoc As Word.Document = New Word.Document()
' 无法知道adoc 的状态,如打开还是关闭
' 当word文件在外部打开状态时,adoc.open出错,并且引发一系列错误
' 直接在代码中调用 word.dll 还行,可是把它封装到一个类模块中是, 总是出错: "ERROR: 文档对像不是活动文档"
这涉及到组件的状态管理和封装使用时的上下文问题,需正确处理组件的生命周期和状态。