①1 什么是 VB.NET? Microsoft推出全新的编程和操作系统Framework——.NET,支持多种语言利用公共.NET库开发应用程序,这些应用程序在.NET Framework上运行.使用Visual Basic在.NET Framework上编程,这就是VB.NET.
首先,让我演示在VB.NET中写最简单的控制台程序:Hello World.
代码 1.1: Hello VB.NET World例子Imports System
Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End Sub
End Module
vbc HelloWorld.vb /out:HelloWorld.exe /t:exe
编译结束后,HelloWorld.exe被创建到当前目录下.在资源管理其中双击图标或在命令行执行,程序正确地运行了.祝贺你进入VB.NET开发者的行列.
Imports 语句
如你所知,大部分的.NET类型都在名字空间(namespace)中定义.Namespace是定义和管理类别的范畴.察看.NET Framework Class Library,可以看到数以百计的namespace.例如,System namespace就包括了Console、Object等类型定义.如果想使用Console类,需要用Imports指令导入System namespace.如下所示:
Imports System甚至可以明确地调用namespace而无需用Import导入.下面的例子展示了不用Import的"Hello World!"程序:
Imports System; System namespace定义了Console类,该类用于读写控制台(命令行窗口).然后你定义了一个module:Module Module1
...End Module所有的VB程序都包括一个Main()方法,即应用程序入口点.在例子程序中,我们调用Console.WriteLine()向控制台写入"Hello VB.NET World!":
Console.WriteLine("Hello VB.NET World!") End SubWriteLine()方法归属于Console类,它负责向控制台写一个带有行结束符的字符串.如前所述,Console类定义于System namespace,你通过直接引用来控制类成员.
Console类负责读写系统控制台.读控制台输入用Read和ReadLine方法,向控制台输出用WriteLine方法.
表1.1 Console类定义的方法
方法 用途 例子
Read 读入单个字符 int i = Console.Read();
ReadLine 读入一行 string str = Console.ReadLine();
Write 写一行 Console.Write("Write: 1");
WriteLine 写一行,并带上行结束符
Console.WriteLine("Test Output Data with Line");
下面是VB.NET的特性列表——
一个namespace是类和组件的逻辑组合,其目的在于将.NET class按类别定义.微软借用了C++ class packaging概念:namespace来描述这种组合..NET Framework中的组件被称为集合(assembly).全部.NET代码在数百个库文件(DLL)中定义.Namespace把assembly中定义的类组织起来.一个namespace可以包括多个assembly,一个assembly也可以在多个namespace中定义. namespace树的根节点是System namespace.在.NET Library中,每个class都在一组相似的类别中定义.例如,System.Data namespace只包括数据相关类.同样,System.Multithreading只包括多线程类.
在使用.NET支持的语言(如C#、VB.NET、C++.NET等)创建新应用程序时,你会注意到每个应用程序都被定义为一个namespace,而所有的class都归属于这个namespace.通过引用这个namespace,其它应用程序就能存取这些class. 在.NET中,代码被编译为中间语言(Intermediate Language,IL),assembly中存储了IL代码、元数据和其它资源文件.同一个assembly可以附属于一个或多个Exe/DLL.所有的.NET库都存储在assembly中.
Class 和 ModuleVB.NET用Class...End Class语句对创建class.每个VB.NET至少包括一个Module(模块).Module在Module...End Module语句对中实现.应用程序的主要模块是Main方法,亦即应用程序入口点.
Dim cls As TestClass = New TestClass
Console.WriteLine(cls.MyMethod)
Class TestClass
Function MyMethod() As String
Return "Test Method"
End Function
End Class
End ModuleProperty属性(Property)是类变量的公共描述.Property...End Property语句用以创建property.属性的Get/Set方法分别用于取得和设置属性值.下面的例子中,Data是TestClass的属性.
Imports System
Imports System.Console
WriteLine(cls.MyMethod)
WriteLine(cls.Data)
cls.Data = "New Data"
Private strData As String = "Some Data"
Return "Test Method!"
' Adding Data property to the class
Public Property Data() As String
Get
Return strData
End Get
Set(ByVal Value As String)
strData = Value
End Set
End Property
重载VB.NET通过overload关键字支持方法重载.使用这个关键字,你可以定义同名但不同参数的方法.
类成员访问域
除了原有的Private和Public,VB.NET引入了几个新关键字.全部访问域关键字列表如下:
关键字 作用域
Private 限于class内部
Public 可以从class外访问
Friend 限于class所属的应用程序内
Protected 只能被class和其派生类访问
Protected Friend 能被class、应用程序和派生类访问
继承继承是面向对象编程语言中最常用的技术.继承让你能够重用类代码和功能.
Dim bObj As B = New B
WriteLine(bObj.MethodA())
' Class A defined
Public Class A
Function MethodA() As String
Return "Method A is called."
'Class B, inherited from Class A. All members (Public and Protected)
' can be access via B now.
Public Class B
Inherits A
Function MethodB() As String
Return "Method B is called."
可以从一个class中派生多个自定义class,也可以从多个class派生一个自定义class.
共享的成员类的共享成员被类的所有实体共享.共享成员可能是属性、方法或字段/值域.在你不想让用户全面控制自己的类时,共享成员相当有用.例如,你可以开发一个类库,让用户通过共享成员使用其中的部分功能.
可以通过class本身引用共享成员,而无需通过类的实体.例如:Module Module1
WriteLine(A.MethodA())
Shared Function MethodA() As String
多线程VB语言的一大弱点就是缺乏编写自由线程(free-threaded)程序的能力.在.NET Framework中,所有语言共享CRL(Common Runtime Library,公共运行库),也就是说,你可以用VB.NET、C#或其它.NET语言编写同样的程序.
System.Threading namespace定义了线程类.我们只需要引入System.Threading namespace,即可使用线程类.
System.Threading.Thread类提供线程对象,可以使用Thread类创建或破坏线程.
创建线程使用Thread类的实体创建一个新线程,然后用Thread.Start方法开始执行线程.线程构造器接受一个参数,该参数指明你要在线程中执行的procedure.在下例中,我想在oThread1(Thread类的一个实体)的第二线程中执行SecondThread过程:
oThread1 = New Thread(AddressOf SecondThread)
SecondThread procedure looks like below:
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
然后,调用Thread.Start()开始线程:
oThread1.Start()
下面的代码创建两个第二线程:
Imports System.Threading
Public oThread1 As Thread
Public Sub ThirdThread()
Console.WriteLine("A" + i.ToString())
破坏线程 调用Abort方法来破坏(中止)一个线程.在调用Abort之前,确保用IsAlive判断线程处于活动状态.
If oThread1.IsAlive Then
oThread1.Abort()
End If
暂停线程可以使用Sleep方法来暂停线程执行.Sleep方法接受一个以毫秒为单位的参数,指明线程应当暂停多长时间.
下面的例子让线程暂停1秒钟:
设定线程优先级Thread类的Priority属性用于设定线程优先级.该属性可以设置为Normal,AboveNormal,BelowNormal,Highest和Lowest.如:
oThread.ApartmentState = ApartmentState.MTAMTS意味着可以使用多线程模式,而STA则只能是单线程执行.
Public Enum ApartmentState
{
STA = 0,
MTA = 1,
}
' 可能导致异常的代码
Catch
' 当异常发生时处理异常的代码
Finally
' 清理现场
End Try
Try语句块用以抛出异常.如果异常发生,在Catch语句块中处理.Finally语句块是可选的,在需要释放资源时特别有用.
数据类型(Data Type)的改变VB.NET中有些数据类型得到改进.下面是变化对照表.
Currency 用于存储大浮点数 被decimal替代,支持更高精度
Variant 可以存储任意类型数据 被Object类型替代,也可以存储任意类型数据,但结果更好
Date Date类型被存储为double 引入DateTime类型,用于存储不同格式的日期
Dim i As Integer = New Integer()i = 10System.Console.WriteLine(i.ToString()) 代码块级别支持.像C++一样,VB.NET支持代码块级别的作用域检查.在语句块中声明的变量只在块内有效.
改进了的类型安全
VB.NET不支持Any关键字.你必须指定每个参数和返回值的数据类型.数组VB.NET对数组作了明显的改动.
这里的ArrWeekDays数组是固定长度的,不能用ReDim语句改变长度.VB.NET不支持固定长度数组,所以ReDim总是有效.
算术操作符VB.NET支持类似C++的快捷方式.下面的表格显示了常规操作与快捷操作的不同之处.快捷方式也可用于*、/、|、等操作符.
Type StdRec
StdId As Integer
StdName As String End Type
VB.NET引入新的语法:Structure.Type...End Type不再被支持.Structure...End Structure与C++用法相同.可以指定结构中每个元素的可访问域,如Public、Protected、Friend、Protected Friend、Private等.例如:
Structure StdRec
Public StdId As Integer Public StdName As String
VB.NET是VB的一个后继版本,以前版本的VB虽然号称自己是一种OOP(面向对象)编程语言,但却不是一个地地道道的OOP编程语言,最多只是半个面向对象的编程语言.实际上他是一种面向事件的编程语言.正是由于此种原因,所以以前的VB在功能上是相对较弱的.但自从微软推出VB.NET以后,这种情况就大为改变,VB.NET已经是一种完全的面向对象的编程语言. 其中基本元素就是名称空间(NameSpace),名称空间实质上是一个大的类库(Class Library).在其中定义了许多的类、对象、属性和方法..vb.net namespace 是什么
VB.NET可选参数的默认值必须是一个常数表达式.
过程定义中跟在可选参数后的每个参数也都必须是可选的.
下面的语法显示带VB.NET可选参数的过程声明:
Sub sub name(ByVal parameter 1 As data type 1,
调用带VB.NET可选参数的过程
过程在运行时无法检测到给定的参数是否已被省略,或者调用代码是否已显式提供默认值.如果需要弄清楚这一点,可以设置一个不可能的值作为默认值.下面的过程定义了可选参数 office,并测试其默认值 QJZ 以查看它在调用中是否已被省略:
Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters" End If
' Insert code to notify headquarters or specified office.
如果可选参数是像 String 这样的引用类型,只要它不是该变量所预期的值,就可以使用 Nothing 作为默认值.
VB.NET可选参数和重载
定义带可选参数的过程的另一种方法是使用重载.如果有一个可选参数,可以定义过程的两个重载版本,一个接受此参数,另一个则不带参数.此方法随可选参数数目的增加而变得更复杂.然而,这样做的优点是可以完全确定调用程序是否提供了每个VB.NET可选参数.
方法很多:
比如可以设置一个数组,大小是你指定的空格数,不写内容.调用的时候将指针指向数组首就可以了.
或者在调用的时候,增加个FOR循环,按input空格数,执行空格输出(或者调用)
建议你采用VB.NET进行开发.假如你有一些VB的基础的话,很容易就能过渡到VB.NET的.
根据你说的希望通过excel把数据输入好后用acad调用一次性把所有的图注释好,AutoCAD的.NET编程就可以实现在不在AutoCAD界面打开dwg文件的情况下操作文件.
至于你要掌握什么东西,我觉得主要有三点:
①. VB向VB.NET的过渡,这点不难,两者有很大的相似性,熟悉一下新的编程环境就好;
需要具体帮助可以给联系我.假如你一个学期就做这个的话,足够.
以上就是土嘎嘎小编为大家整理的spacevb.net的简单介绍spacevb.net的简单介绍相关咨询咨询主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!