vb.net_vb.net datagridview - CSDN
vb.net 订阅
Visual Basic.NET是基于微软.NET Framework之上的面向对象的编程语言。 [1]  其在调试时是以解释型语言方式运作,而输出为EXE程序时是以编译型语言方式运作。可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated development environment).SharpDevelop是另一种可用的开源的IDE。VB.Net需要在.Net Framework平台上才能执行。 展开全文
Visual Basic.NET是基于微软.NET Framework之上的面向对象的编程语言。 [1]  其在调试时是以解释型语言方式运作,而输出为EXE程序时是以编译型语言方式运作。可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated development environment).SharpDevelop是另一种可用的开源的IDE。VB.Net需要在.Net Framework平台上才能执行。
信息
外文名
Visual Basic .NET
操作系统
MicrosoftWindows,Android,BSD等
开发公司
微软(Microsoft)
主要实作产品
Microsoft Visual Studio等
许可证
专有软件
中文名
Visual Basic .NET
派生副语言
Microsoft Visual Basic
编程范型
结构化 指令式 面向对象 声明式
发行日期
2002年
Platform
通用语言运行库
Visual Basic .NET简介
Visual Basic .NET通常缩写为VB.NET,在某些特定情况下也直接简称VB,比如在.NET这个大话题下或者与其他.NET语言一起讨论的时候。Visual Basic .NET属Basic系语言,其语法特点是以极具亲和力的英文单词为基础标识,以及与自然语言极其相近的逻辑表达,有时候你会觉得写VB.NET代码就好像在写英文句子一样,从这个角度来说,VB.NET似乎是最高级的一门编程语言,当然在Basic系语言中VB.NET也确实是迄今为止最强大的一门编程语言。Visual Basic .NET的应用范围包括Windows桌面、Web以及当下突然觉醒的正在奋力追赶的第三大移动平台Windows Phone。由于改动太大,导致VB.NET对VB的向后兼容性不好,在业界引起不小的争议。VB.NET是"...中间解释性语言“,这种说法极不准确,甚至完全错误。可能原编辑者是指的编译器会先将源码翻译成MSIL(Microsoft Intermediate Language)中间语言这回事,但这和”解释性语言“有很大差别。此段列出的是仅Visual Basic .Net语言部分较独特或者较重要的特性。*运算优先级:算术>连接>比较>逻辑运算(用括号可改变优先级)详细:如果表达式中出现几种运算,将按照预先确定的称为“运算符优先级”的顺序计算和解析各个部分。优先级规则当表达式包含不止一种运算符时,则按照下列规则对其进行计算:优先级顺序运算符的计算优先级顺序如下:算术运算符和串联运算符求幂 (^)一元标识和非(+、–)乘法和浮点除法(*、/)整数除法 (\)取模 (Mod)加法和减法(+、–),字符串连接 (+)字符串连接 (&)算术移位(<>)比较运算符所有比较运算符(=、<>、、>=、Is、IsNot、Like、TypeOf...Is)逻辑运算符和位运算符非 (Not)与 (And、AndAlso)或 (Or、OrElse)异或 (Xor)注释= 运算符只是相等比较运算符,而不是赋值运算符。字符串连接运算符 (&) 不是算术运算符,但它在优先级方面与算术运算符属于一组。Is 和 IsNot 运算符是对象引用比较运算符。 它们不比较两个对象的值,只确定两个对象变量是否指向相同的对象实例。结合性当具有相同优先级的运算符(例如乘法和除法)在表达式中一起出现时,编译器将按每个运算符出现的顺序从左至右进行计算。Visual Basic 中的运算符具有“左结合性”。重写优先级和结合性可以使用括号强制表达式中的某些部分先于其他部分计算。 这会重写优先级顺序和左结合性。 Visual Basic 始终先执行括在中括号内的操作,再执行括号外的操作。然而,在括号内,它保持普通优先级和结合性,除非您在括号内再使用括号。*三元表达式:IIf(Expression,TruePart,FalsePart),是Microsoft.VisualBasic命名空间下的函数,不论结果如何都会计算TruePart和FalsePart的表达式,它有相应的返回值。较高版本中存在 If(Expression,TruePart,FalsePart) 运算符,与IIf的区别是它能短路计算,Expression为真时不计算FalsePart,Expression为假时不计算TruePartVisual Basic .Net有很多系统常量,它们都在Microsoft.VisualBasic.Constants命名空间下,这些常量包括很多方面,如表示回车换行符的vbCrLf、表示逻辑结果的vbOK以及用在时间方面的vbShortDate等等。Visual Basic .Net已经是一门完全面向对象的语言,以下是关于面向对象的一些关键词:还有一些与上面对应的如可重载、必须继承等等在这里就没必要一一列出了。在Visual Basic .Net使用 Function 或 Sub 关键字创建 Lambda 表达式,就像创建标准函数或子例程一样。 但是,Lambda 表达式包括在语句中。下面分别演示单行与多行。用Function并返回值:用Sub:比起其他语言,Visual Basic .Net用Function和Sub更能直观体现Lambda表达式的本质——匿名方法。
收起全文
精华内容
参与话题
  • VB.NET 教程_01_基础语法

    万次阅读 多人点赞 2018-08-08 00:48:58
    VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。 Visual Basic .NET(VB.NET)是在.NET Framework上...

     

     

    VB.Net教程简介:

    VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。

    Visual Basic .NET(VB.NET)是在.NET Framework上实现的面向对象的计算机编程语言。 虽然它是经典的Visual Basic语言的演变,但是它不兼容VB6,在任何旧版本编写的代码不能在VB.NET下编译。 
    像所有其他.NET语言一样,VB.NET完全支持面向对象的概念。 VB.NET中的一切都是一个对象,包括所有的基本类型(Short,Integer,Long,String,Boolean等)和用户定义的类型,事件,甚至是程序集。 所有对象从基类Object继承。
    VB.NET是由Microsoft的.NET框架实现的。 因此,它可以完全访问.Net框架中的所有库。 也可以在Mono上运行VB.NET程序,Mono是.NET的开源替代软件,不仅在Windows下,甚至在Linux或Mac OSX上。  

     

    以下原因使VB.Net成为广泛使用的专业语言:

    • 现代,通用。
    • 面向对象。
    • 面向组件。
    • 简单易学。
    • 结构化的语言。
    • 它产生高效的程序。
    • 它可以在各种计算机平台上进行编译。
    • .NET Framework(框架)的一部分。

    VB.Net强大的编程功能

    VB.Net有许多强大的编程功能,使世界各地的程序员都很喜欢使用它。 让我们看一下这些功能:

    • 布尔条件
    • 自动垃圾回收
    • 标准库
    • 程序集版本控制
    • 属性和事件
    • 委托和事件管理
    • 易于使用泛型
    • 索引器
    • 条件编译
    • 简单的多线程

    本教程将教你基本的VB.Net编程,也将带你学习与VB.Net编程语言相关的各种高级概念。

    本教程是为初学者准备的,帮助他们了解基本的VB.Net编程。 完成本教程后,您将发现自己在VB.Net编程中达到一个中等水平的专业知识,你可以从自己通过其他方式学习到下一个级别。

     

    在您开始学习本教程之前需要先学习以下知识:

    VB.Net 编程很大程度基于 BASIC 和 Visual Basic 编程语言,所以如果你对这些编程语言有基本的了解然后再学习VB.Net你会发现 VB.Net 编程语言的乐趣。

     

    版本历史:

    Visual Basic .NET 2002

    2002年Visual Basic .NET 问世,此后Visual Basic 包含在 Visual Studio套装中。该版本又被称为VB 7.0,是与C#一起在2002年发布的最初始的VB.net版本。C#是一门新设计.Net语言并且语法上和Java有一定的相似性,所以被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET则相反被错误地认为仅仅是VB的一个升级(故有时被称为VB7),它的受关注度也因此较低,当然VB社区以及喜欢Basic系列风格的语言的人还是很关注它的。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言。不过任何一种语言都是有弱点的,当然后面这一点也是.NET语言的共性,那就是运行的计算机上必须装相应版本的.Net framework。

     

    Visual Basic .NET 2003

    该版本是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分发给各国某些学者免费使用的版本。

     

    Visual Basic .NET 2005

    该版本是VB.Net的重大转变。但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。

     

    Visual Basic .NET 2008

    Visual Basic 2008于2008年2月1日发布。通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程序,现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。

     

    Visual Studio 2010

    Visual Studio 2010于2010年4月12日上市,其中包含 Visual Basic .NET 2010 。Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库等。

     

    Visual Studio 2012

    从该版本开始VB.NET已没有单独发售的IDE了,微软给Visual Basic .NET 以及C#开发者的IDE就只有Visual Studio 了。该版本增加了modern(原metro)风格的支持等众多新特性。

     

    Visual Studio 2015

    增加了大量新特性,提升你的编写效率。对编译器和开发环境优化,提高编译速度,帮你重构代码和解决错误。最明显的14项改进见参考资料的14 Top Improvements in Visual Basic 14。

     

    VB关系

    不能简单认为VB .net是VB的新版本。首先它们一个是完全面向对象的语言,而另一个不是完全面向对象的,其次VB .NET是构建于.Net framework之上的。当然,它们同属Basic系列语言,又同为微软所开发,语法上有一定的相似或沿袭是很正常的,但不能因此认为VB .NET是VB的升级版。

    对于想从VB转到VB .NET的开发者来说,如果你只是喜欢Basic系列语言的代码风格,那么你的迁移会很顺利,如果你想沿袭之前VB的编程思想和习惯,你会很苦恼,原因之一就是VB .NET贯穿的是完全面向对象的思想,而VB不是。

    微软为使VB开发者更容易转到VB .NET,兼容一些VB6函数和库的用法,但是比不上.NET语言中自带的可替换的函数和库来得高效,所以我们应该尽量使用.NET下的新方法。微软还提供了VB到VB .NET的自动转换器,虽几经改进,但仍无法转换全部代码,几乎所有非小型程序都需要人工修改以完成编译。为了运行优化,大多程序需要大量工作去重构。

     

    争议与解释:许多资深的VB程序员抱怨VB .NET,因为VB .NET丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。其实不应该再把VB和VB .NET做功能上的比较,因为它们除了有些语法相似外,可以说是完全不同的两种语言。

    Visual Basic .NET与VB都代表了Basic系列语言的编码风格,Visual Basic .NET是这种编码风格在.NET平台上的继承,而不是同系列语言VB的沿袭。

    VB.Net教程结构概述:

    本教程共由3个章节构成,详细讲述了vb.net的基础使用方法并附带了大量示例辅助您的学习,让您轻松掌握VB .Net。

    本教程包含:

    1、《VB.Net教程-基础语法》

    2、《VB.Net教程-常见对象》

    3、《VB.Net教程-面向对象》

    4、《VB.Net教程-高级教程》
     

     

    VB.Net - 环境设置

     

    在本章中,我们将讨论可用于创建VB.Net应用程序的工具。

    我们已经提到VB.Net是.Net框架的一部分,用于编写.Net应用程序。 因此,在讨论用于运行VB.Net程序的可用工具之前,让我们先了解VB.Net如何与.Net框架相关。

    .NET框架 

    .NET Framework是一个革命性的平台,可以帮助你编写以下类型的应用:

    • Windows应用程序

    • Web应用程序

    • 网页服务

     

    .Net框架应用程序是多平台应用程序。 该框架的设计方式使其可以从以下任何语言使用:Visual Basic,C#,C ++,Jscript和COBOL等。

     

    .Net框架包含一个巨大的代码库,用于客户端语言(如VB.Net)。 这些语言使用面向对象的方法。

     

    所有这些语言可以访问框架以及彼此通信。

     

     

    以下是.Net框架的一些组件:

     

    • 公共语言运行时(CLR)  Common Language Runtime (CLR)

    • .NET框架类库  The .Net Framework Class Library

    • 公共语言规范  Common Language Specification

    • 通用类型系统  Common Type System

    • 元数据和组件  Metadata and Assemblies

    • Windows窗体  Windows Forms

    • ASP.Net和ASP.Net AJAX  

    • ADO.Net

    • Windows工作流基础(WF)  Windows Workflow Foundation (WF)

    • Windows演示基础  Windows Presentation Foundation

    • Windows通讯基础(WCF)  Windows Communication Foundation (WCF)

    • LINQ

     

    有关每个组件的详细信息,请参阅微软的文档。

     

    VB.Net的集成开发环境(IDE) 

     

    Microsoft为VB.Net编程提供以下开发工具:

    1、Visual Studio 2010(VS)

     

    2、Visual Basic 2010 Express(VBE)

     

    3、可视化Web开发

     

    最后两个是免费的。 使用这些工具,您可以将各种VB.Net程序从简单的命令行应用程序写入到更复杂的应用程序。 Visual Basic Express和Visual Web Developer Express版是Visual Studio的精简版本,具有相同的外观和感觉。 它们保留了Visual Studio的大多数功能。 在本教程中,我们使用了Visual Basic 2010 Express和Visual Web Developer(针对Web编程章节)。

     

    它会自动安装在您的计算机上。 请注意,您需要一个有效的互联网连接安装快速版本。

     

    在Linux或Mac OS上编写VB.Net程序

     

    虽然.NET Framework在Windows操作系统上运行,但有一些替代版本可在其他操作系统上运行。 Mono是.NET Framework的开源版本,包括Visual Basic编译器,可在多种操作系统上运行,包括各种Linux和Mac OS。 最新版本是VB 2012。

    Mono的既定目的不仅是能够跨平台运行Microsoft .NET应用程序,而且为Linux开发人员提供更好的开发工具。 Mono可以在许多操作系统上运行,包括Android,BSD,iOS,Linux,OS X,Windows,Solaris和UNIX。

     

     

    VB.Net - 程序结构

     

    在我们学习VB.Net编程语言的基本构建块之前,让我们看看一个最小的VB.Net程序结构,以便我们可以将它作为未来的章节的参考。

     

    VB.Net Hello World示例

    一个VB.Net程序主要由以下几部分组成:

    • 命名空间声明  Namespace declaration

    • 一个类或模块  A class or module

    • 一个或多个程序  One or more procedures

    • 变量  Variables

    • 主过程  The Main procedure

    • 语句和表达式  Statements & Expressions

    • 注释  Comments

     

    让我们看一个简单的代码,打印单词“Hello World”:

    Imports System
    Module Module1
       'This program will display Hello World 
       Sub Main()
          Console.WriteLine("Hello World")
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Hello, World!
    

    让我们来看看上面的程序中的各个部分:

    • 程序Imports System的第一行用于在程序中包括系统命名空间。The first line of the program Imports System is used to include the System namespace in the program.

    • 下一行有一个Module声明,模块Module1。 VB.Net是完全面向对象的,所以每个程序必须包含一个类的模块,该类包含您的程序使用的数据和过程。The next line has a Module declaration, the module Module1. VB.Net is completely object oriented, so every program must contain a module of a class that contains the data and procedures that your program uses.

    • 类或模块通常将包含多个过程。 过程包含可执行代码,或者换句话说,它们定义了类的行为。 过程可以是以下任何一种:

      • 功能 Function

      • 子 Sub

      • 运算符 Operator

      • 获取 Get

      • 组 Set

      • AddHandler

      • RemoveHandler

      • 的RaiseEvent

       

    • 下一行('这个程序)将被编译器忽略,并且已经在程序中添加了额外的注释。

    • 下一行定义了Main过程,它是所有VB.Net程序的入口点。 Main过程说明了模块或类在执行时将做什么。

    • Main过程使用语句指定其行为

      Console.WriteLine(“Hello World”的)

      WriteLine是在System命名空间中定义的Console类的一个方法。 此语句会导致消息"Hello,World !"在屏幕上显示。

       

    • 最后一行Console.ReadKey()是用于VS.NET用户的。 这将阻止屏幕从Visual Studio .NET启动时快速运行和关闭。

    编译和执行VB.Net程序:

    如果您使用Visual Studio.Net IDE,请执行以下步骤:

    • 启动Visual Studio。 Start Visual Studio.

    • 在菜单栏,选择文件,新建,项目。 On the menu bar, choose File, New, Project.

    • 从模板中选择Visual Basic。Choose Visual Basic from templates

    • 选择控制台应用程序。Choose Console Application.

    • 使用浏览按钮指定项目的名称和位置,然后选择确定按钮。 Specify a name and location for your project using the Browse button, and then choose the OK button.

    • 新项目显示在解决方案资源管理器中。 The new project appears in Solution Explorer.

    • 在代码编辑器中编写代码。 Write code in the Code Editor.

    • 单击运行按钮或F5键运行项目。 将出现一个包含行Hello World的命令提示符窗口。 Click the Run button or the F5 key to run the project. A Command Prompt window appears that contains the line Hello World.

     

    您可以使用命令行而不是Visual Studio IDE编译VB.Net程序:

    • 打开文本编辑器,并添加上述代码。 Open a text editor and add the above mentioned code.

    • 将文件另存为helloworld.vb。 Save the file as helloworld.vb

    • 打开命令提示符工具并转到保存文件的目录。 Open the command prompt tool and go to the directory where you saved the file.

    • 类型VBC helloworld.vb,然后按回车编译代码。 Type vbc helloworld.vb and press enter to compile your code.

    • 如果在你的代码中没有错误命令提示符下会带你到下一行,并会产生HelloWorld.exe的可执行文件。 If there are no errors in your code the command prompt will take you to the next line and would generate helloworld.exe executable file.

    • 接下来,输入的HelloWorld来执行你的程序。 Next, type helloworld to execute your program.

    • 您将可以看到“Hello World”字样在屏幕上。 You will be able to see "Hello World" printed on the screen.

     

     

    VB.Net - 基本语法

     

    VB.Net是一种面向对象的编程语言。 在面向对象编程方法中,程序由通过动作相互交互的各种对象组成。 对象可能采取的动作称为方法。 相同类型的对象被认为具有相同的类型,或者更经常地被称为在同一类中。

     

    当我们考虑VB.Net程序时,它可以定义为通过调用对方的方法进行通信的对象的集合。 现在让我们简单地看看类,对象,方法和实例变量是什么意思。

     

    • Object 对象 -对象具有状态和行为。 示例:狗有状态 - 颜色,名称,品种以及行为 - 摇摆,吠叫,吃饭等。对象是类的实例。Objects have states and behaviors. Example: A dog has states - color, name, breed as well as behaviors - wagging, barking, eating, etc. An object is an instance of a class.

    • Class  -类可以被定义为描述其类型的对象支持的行为/状态的模板/蓝图。A class can be defined as a template/blueprint that describes the behaviors/states that objects of its type support.

    • Methods 方法 -方法基本上是一种行为。 一个类可以包含许多方法。 它是在写逻辑,操纵数据和执行所有动作的方法中。A method is basically a behavior. A class can contain many methods. It is in methods where the logics are written, data is manipulated and all the actions are executed.

    • 实例变量 -每个对象都有其唯一的实例变量集。 对象的状态由分配给这些实例变量的值创建。Each object has its unique set of instance variables. An object's state is created by the values assigned to these instance variables.

     

    VB.Net中的Rectangle类

    例如,让我们考虑一个Rectangle对象。 它具有长度和宽度等属性。 根据设计,它可能需要接受这些属性的值,计算面积和显示细节的方式。

     

    让我们看一个Rectangle类的实现,并在我们的观察的基础上讨论VB.Net基本语法:

    Imports System
    Public Class Rectangle
        Private length As Double
        Private width As Double
    
        'Public methods
        Public Sub AcceptDetails()
            length = 4.5
            width = 3.5
        End Sub
    
        Public Function GetArea() As Double
            GetArea = length * width
        End Function
        Public Sub Display()
            Console.WriteLine("Length: {0}", length)
            Console.WriteLine("Width: {0}", width)
            Console.WriteLine("Area: {0}", GetArea())
    
        End Sub
    
        Shared Sub Main()
            Dim r As New Rectangle()
            r.Acceptdetails()
            r.Display()
            Console.ReadLine()
        End Sub
    End Class
    

     

    当上述代码被编译和执行时,它产生以下结果:

    Length: 4.5
    Width: 3.5
    Area: 15.75
    

    在上一章中,我们创建了一个包含代码的Visual Basic模块。 Sub Main表示VB.Net程序的入口点。 这里,我们使用包含代码和数据的类。 您使用类来创建对象。 例如,在代码中,r是一个Rectangle对象。

     

    对象是类的一个实例:

    Dim r As New Rectangle()
    

     

    类可以具有可以从外部类访问的成员,如果指定的话。 数据成员称为字段,过程成员称为方法。

    可以在不创建类的对象的情况下调用共享方法或静态方法。 通过类的一个对象调用实例方法:

     

    Shared Sub Main()
       Dim r As New Rectangle()
       r.Acceptdetails()
       r.Display()
       Console.ReadLine()
    End Sub
    

     

    标识符

    标识符是用于标识类,变量,函数或任何其他用户定义项的名称。 在VB.Net中命名类的基本规则如下:

    • 名称必须以字母开头,后跟一个字母,数字(0 - 9)或下划线。 标识符中的第一个字符不能是数字。A name must begin with a letter that could be followed by a sequence of letters, digits (0 - 9) or underscore. The first character in an identifier cannot be a digit.

    • 它不能包含任何嵌入的空格或符号是怎样的?  - +! @#%^&*()[] {}。 ; :“'/和\。但是,可以使用下划线(_)。It must not contain any embedded space or symbol like ? - +! @ # % ^ & * ( ) [ ] { } . ; : " ' / and \. However, an underscore ( _ ) can be used.

    • 它不应该是保留关键字。It should not be a reserved keyword.

     

    VB.Net关键字

    下表列出了VB.Net保留的关键字:

    AddHandler AddressOf Alias And AndAlso As Boolean
    ByRef Byte ByVal Call Case Catch CBool
    CByte CChar CDate CDec CDbl Char CInt
    Class CLng CObj Const Continue CSByte CShort
    CSng CStr CType CUInt CULng CUShort Date
    Decimal Declare Default Delegate Dim DirectCast Do
    Double Each Else ElseIf End End If Enum
    Erase Error Event Exit False Finally For
    Friend Function Get GetType

    GetXML

    Namespace

    Global GoTo
    Handles If Implements Imports In Inherits Integer
    Interface Is IsNot Let Lib Like Long
    Loop Me Mod Module MustInherit MustOverride MyBase
    MyClass Namespace Narrowing New Next Not Nothing

    Not

    Inheritable

    Not

    Overridable

    Object Of On Operator Option
    Optional Or OrElse Overloads Overridable Overrides ParamArray
    Partial Private Property Protected Public RaiseEvent ReadOnly
    ReDim REM

    Remove

    Handler

    Resume Return SByte Select
    Set Shadows Shared Short Single Static Step
    Stop String Structure Sub SyncLock Then Throw
    To True Try TryCast TypeOf UInteger While
    Widening With WithEvents WriteOnly Xor

     

     

     

    VB.Net - 数据类型

     

    数据类型指用于声明不同类型的变量或函数的扩展系统。 变量的类型确定它在存储中占用多少空间以及如何解释存储的位模式。

    VB.Net中提供的数据类型

    VB.Net提供了多种数据类型。下表显示的所有数据类型可用的:

    数据类型 存储分配 值范围
    Boolean 取决于实施平台
    Byte 1个字节 0到255(无符号)
    Char 2个字节 0〜65535(无符号)
    Date 8个字节 00:00:00(午夜),时间为0001年12月31日11时31分至晚上11:59:59
    Decimal 16字节 0至+/- 79,228,162,514,264,337,593,543,950,335(+/- 7.9 ... E + 28),没有小数点; 0到+/- 7.9228162514264337593543950335,其中小数点右边有28个位
    Double 8个字节

     

    -1.79769313486231570E + 308至-4.94065645841246544E-324,对于负值

    4.94065645841246544E-324至1.79769313486231570E + 308,对于正值

     

    Integer 4个字节 -2,147,483,648至2,147,483,647(有符号)
    Long 8个字节 -9,223,372,036,854,775,808至9,223,372,036,854,775,807(签字)
    Object

    在32位平台上的4个字节

    在64位平台8字节

    任何类型都可以存储在Object类型的变量中
    SByte 1个字节 -128至127(签字)
    Short 2个字节 -32,768至32,767(签字)
    Single 4个字节

    -3.4028235E + 38至-1.401298E-45为负值;

    1.401298E-45至3.4028235E + 38正值

    String 取决于实施平台 0到大约20亿个Unicode字符
    UInteger 4个字节 0至4294967295(无符号)
    ULONG 8个字节 0至18,446,744,073,709,551,615(签名)
    User-Defined 取决于实施平台 结构的每个成员具有由其数据类型确定的范围并且独立于其他成员的范围
    UShort 2个字节 0至65,535(无符号)

     

    示例

    下面的示例演示使用的一些类型︰

    Module DataTypes
       Sub Main()
          Dim b As Byte
          Dim n As Integer
          Dim si As Single
          Dim d As Double
          Dim da As Date
          Dim c As Char
          Dim s As String
          Dim bl As Boolean
          b = 1
          n = 1234567
          si = 0.12345678901234566
          d = 0.12345678901234566
          da = Today
          c = "U"c
          s = "Me"
          If ScriptEngine = "VB" Then
             bl = True
          Else
             bl = False
          End If
          If bl Then
             'the oath taking
              Console.Write(c & " and," & s & vbCrLf)
              Console.WriteLine("declaring on the day of: {0}", da)
              Console.WriteLine("We will learn VB.Net seriously")
              Console.WriteLine("Lets see what happens to the floating point variables:")
              Console.WriteLine("The Single: {0}, The Double: {1}", si, d)
          End If
          Console.ReadKey()
       End Sub
    
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    U and, Me
    declaring on the day of: 12/4/2012 12:00:00 PM
    We will learn VB.Net seriously
    Lets see what happens to the floating point variables:
    The Single:0.1234568, The Double: 0.123456789012346
    

     

    VB.Net中的类型转换函数

    VB.Net提供以下内联类型转换函数:

    SN 功能和说明
    1

    CBool(表达式)

    将表达式转换为布尔数据类型。

    2

    CByte(表达式)

    将表达式转换为字节数据类型。

    3

    CChar(表达式)

    将表达式转换为Char数据类型。

    4

    CDate(表达式)

    将表达式转换为Date数据类型

    5

    CDbl(表达式)

    将表达式转换为双精度数据类型。

    6

    CDec(表达式)

    将表达式转换为十进制数据类型。

    7

    CInT(表达式)

    将表达式转换为整数数据类型。

    8

    CLng函数(表达式)

    将表达式转换为长数据类型。

    9

    CObj(表达式)

    将表达式转换为对象类型。

    10

    CSByte(表达式)

    将表达式转换为SByte数据类型。

    11

    CShort(表达式)

    将表达式转换为短数据类型。

    12

    CSng函数(表达式)

    将表达式转换为单一数据类型。

    13

    CStr的(表达式)

    将表达式转换为字符串数据类型。

    14

    CUInt(表达式)

    将表达式转换为UInt数据类型。

    15

    CULng(表达式)

    将表达式转换为ULng数据类型。

    16

    CUShort(表达式)

    将表达式转换为UShort数据类型。

     

    示例:

    下面的例子演示了其中的一些功能:

    Module DataTypes
       Sub Main()
          Dim n As Integer
          Dim da As Date
          Dim bl As Boolean = True
          n = 1234567
          da = Today
          Console.WriteLine(bl)
          Console.WriteLine(CSByte(bl))
          Console.WriteLine(CStr(bl))
          Console.WriteLine(CStr(da))
          Console.WriteLine(CChar(CChar(CStr(n))))
          Console.WriteLine(CChar(CStr(da)))
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    True
    -1
    True
    12/4/2012
    1
    1

     

     

    VB.Net - 变量

     

     

    一个变量只是一个给我们的程序可以操作的存储区域的名字。 VB.Net中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可以存储在该存储器内的值的范围; 以及可以应用于该变量的一组操作。

    我们已经讨论了各种数据类型。 VB.Net中提供的基本值类型可以分为:

     

     

    类型 示例
    Integral types SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong and Char
    Floating point types Single and Double
    Decimal types Decimal
    Boolean types True or False values, as assigned
    Date types Date

    VB.Net还允许定义其他值类型的变量,如枚举和类的变量的引用类型。 我们将在后续章节讨论日期类型和类。

     


    VB.Net中的变量声明

     

    Dim语句用于一个或多个变量的变量声明和存储分配。 Dim语句用于模块,类,结构,过程或块级别。

    VB.Net中变量声明的语法是:

     

    [ < attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]]
    [ ReadOnly ] Dim [ WithEvents ] variablelist

    1、attributelist是适用于变量的属性列表。 可选的。
     

    2、accessmodifier定义变量的访问级别,它具有值 - Public,Protected,Friend,Protected Friend和Private。 可选的。


    3、Shared共享声明一个共享变量,它不与类或结构的任何特定实例相关联,而是可用于类或结构的所有实例。 可选的。

    4、Shadows阴影表示变量在基类中重新声明和隐藏一个同名的元素或一组重载的元素。 可选的。

    5、Static表示变量将保留其值,即使在声明它的过程终止之后。 可选的。
     

    6、ReadOnly表示变量可以读取,但不能写入。 可选的。
     

    7、WithEvents指定该变量用于响应分配给变量的实例引发的事件。 可选的。
     

    8、Variablelist提供了声明的变量列表。

     

    变量列表中的每个变量具有以下语法和部分:

    variablename[ ( [ boundslist ] ) ] [ As [ New ] datatype ] [ = initializer ]
    

    1、variablename:是变量的名称
     

    2、boundslist:可选。 它提供了数组变量的每个维度的边界列表。
     

    3、New:可选。 当Dim语句运行时,它创建一个类的新实例。

    4、datatype:如果Option Strict为On,则为必需。 它指定变量的数据类型。
     

    5、initializer:如果未指定New,则为可选。 创建时评估并分配给变量的表达式。

     

    一些有效的变量声明及其定义如下所示:

    Dim StudentID As Integer
    Dim StudentName As String
    Dim Salary As Double
    Dim count1, count2 As Integer
    Dim status As Boolean
    Dim exitButton As New System.Windows.Forms.Button
    Dim lastTime, nextTime As Date
    

     

    VB.Net中的变量初始化

    变量被初始化(赋值)一个等号,然后是一个常量表达式。 初始化的一般形式是:

    variable_name = value;
    

     

    例如,

    Dim pi As Double
    pi = 3.14159
    

     

    您可以在声明时初始化变量,如下所示:

    Dim StudentID As Integer = 100
    Dim StudentName As String = "Bill Smith"
    

     

    示例

    尝试下面的例子,它使用各种类型的变量:

    Module variablesNdataypes
       Sub Main()
          Dim a As Short
          Dim b As Integer
          Dim c As Double
          a = 10
          b = 20
          c = a + b
          Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c)
          Console.ReadLine()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    a = 10, b = 20, c = 30
    

     

    接受来自用户的值

    System命名空间中的控制台类提供了一个函数ReadLine,用于接受来自用户的输入并将其存储到变量中。 例如,

    Dim message As String
    message = Console.ReadLine
    

     

    下面的例子说明:

    Module variablesNdataypes
       Sub Main()
          Dim message As String
          Console.Write("Enter message: ")
          message = Console.ReadLine
          Console.WriteLine()
          Console.WriteLine("Your Message: {0}", message)
          Console.ReadLine()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果(假设用户输入的Hello World):

    Enter message: Hello World   
    Your Message: Hello World
    

     

    Lvalues和Rvalues

    有两种表达式:

    • lvalue:作为左值的表达式可能出现在赋值的左侧或右侧。
    • rvalue:作为右值的表达式可能出现在作业的右侧但不是左侧。

     

    变量是左值,因此可能出现在作业的左侧。 数字文字是右值,因此可能不会分配,不能出现在左侧。 以下是有效的语句:

    Dim g As Integer = 20
    

     

    但以下并不是有效的语句,并会生成编译时的错误:

    20 = g

     

     

    VB.Net - 常数和枚举

     

     

    constants 常数指的是程序在执行过程中可能不会改变的固定值。 这些固定值也称为文字。

    常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串常量。 还有枚举常量。

    常量被视为常规变量,除了它们的值不能在它们的定义之后被修改。
     

    enumeration 枚举是一组命名的整数常量。

     

     

    声明常量

     

    在VB.Net中,常量是使用Const语句声明的。 Const语句用于模块,类,结构,过程或块级别,以用于替换文字值。

    Const语句的语法是:

     

    [ < attributelist> ] [ accessmodifier ] [ Shadows ] 
    Const constantlist

    1、attributelist:指定应用于常量的属性列表; 您可以提供多个属性,以逗号分隔。 可选的。
     

    2、accessmodifier:指定哪些代码可以访问这些常量。 可选的。 值可以是:Public, Protected, Friend, Protected Friend, or Private.

    3、Shadows:这使常量隐藏基类中相同名称的编程元素。 可选的。

    4、Constantlist:给出声明的常量的名称列表。 必填。

     

    其中,每个常量名都有以下语法和部分:

    constantname [ As datatype ] = initializer

    1、constantname 常量名:指定常量的名称


    2、data type 数据类型:指定常量的数据类型


    3、initializer 初始值设定:指定分配给常量的值

     

    例如,

    'The following statements declare constants.'
    Const maxval As Long = 4999
    Public Const message As String = "HELLO" 
    Private Const piValue As Double = 3.1415
    

     

    示例

    以下示例演示了常量值的声明和使用:

    Module constantsNenum
       Sub Main()
          Const PI = 3.14149
          Dim radius, area As Single
          radius = 7
          area = PI * radius * radius
          Console.WriteLine("Area = " & Str(area))
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Area = 153.933
    

     

    在VB.Net中输出和显示常量

    VB.Net提供以下打印和显示常量:

    Constant 描述
    vbCrLf 回车/换行字符组合。
    vbCr 回车字符。
    vbLf 换行字符。
    vbNewLine 换行字符。
    vbNullChar 空字符。
    vbNullString 不等于零长度字符串(“”); 用于调用外部过程。
    vbObjectError 错误号。用户定义的错误号应大于此值。例如: 
    Err.Raise(数字)= vbObjectError + 1000
    vbTab 标签字符。
    vbBack 退格字符。

     

    声明枚举

     

    使用Enum语句声明枚举类型。 Enum语句声明一个枚举并定义其成员的值。 Enum语句可以在模块,类,结构,过程或块级别使用。

    Enum语句的语法如下:

     

    [ < attributelist > ] [ accessmodifier ]  [ Shadows ] 
    Enum enumerationname [ As datatype ] 
       memberlist
    End Enum

    1、attributelist:指应用于变量的属性列表。 可选的。
     

    2、asscessmodifier:指定哪些代码可以访问这些枚举。 可选的。 值可以是:公共,受保护,朋友或私人。

    3、Shadows:这使枚举隐藏基类中相同名称的编程元素。 可选的。

    4、enumerationname:枚举的名称。 必填

    5、datatype:指定枚举的数据类型及其所有成员。
     

    6、memberlist:指定在此语句中声明的成员常数的列表。 必填。

     

    成员列表中的每个成员具有以下语法和部分:

    [< attribute list>] member name [ = initializer ]
    • name 名称 :指定成员的名称。必填。

    • initializer 初始化 :分配给枚举成员的值。可选的。

     

    例如,

    Enum Colors
       red = 1
       orange = 2
       yellow = 3
       green = 4
       azure = 5
       blue = 6
       violet = 7
    End Enum
    

     

    示例

    以下示例演示了Enum变量颜色的声明和使用:

    Module constantsNenum
       Enum Colors
          red = 1
          orange = 2
          yellow = 3
          green = 4
          azure = 5
          blue = 6
          violet = 7
       End Enum
       Sub Main()
          Console.WriteLine("The Color Red is : " & Colors.red)
          Console.WriteLine("The Color Yellow is : " & Colors.yellow)
          Console.WriteLine("The Color Blue is : " & Colors.blue)
          Console.WriteLine("The Color Green is : " & Colors.green)
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    The Color Red is: 1
    The Color Yellow is: 3
    The Color Blue is: 6
    The Color Green is: 4

     

     

     

     

    VB.Net - 修饰符

     

     

     

    修饰符是通过任何编程元素添加的关键字,以便特别强调编程元素将如何在程序中执行或将被访问

    例如,访问修饰符:Public, Private, Protected, Friend, Protected Friend等,指示编程元素的访问级别,如变量,常量,枚举或类。

     

     

    VB.Net中可用的修饰符列表

    下表提供了VB.Net修饰符的完整列表:

    S.N 修饰符 描述
    1 Ansi 指定Visual Basic应该将所有字符串编组到美国国家标准协会(ANSI)值,而不考虑正在声明的外部过程的名称。
    2 Assembly 指定源文件开头的属性适用于整个程序集。
    3 Async 表示它修改的方法或lambda表达式是异步的。 这样的方法被称为异步方法。 异步方法的调用者可以恢复其工作,而不必等待异步方法完成。
    4 Auto 在外部过程的调用期间,十进制中的chchetetmodifierpart提供用于编组字符串的字符集信息。 它还会影响Visual Basic如何在外部文件中搜索外部过程名称。 Auto修饰符指定Visual Basic应根据.NET Framework规则编组字符串。
    5 ByRef 指定参数通过引用传递,即被调用过程可以更改调用代码中参数下面的变量的值。 它在下列语境下使用:
    • 声明声明
    • 函数语句
    • Sub语句
    6 BYVAL 指定传递参数时,调用过程或属性不能更改调用代码中参数下面的变量的值。 它在下列语境下使用:
    • 声明语句
    • 函数语句
    • 运算符的声明
    • 属性声明
    • Sub语句
    7 Default 标识属性作为它的类、 结构或接口的默认属性。
    8 Friend

     

    指定一个或多个声明的编程元素可以从包含其声明的程序集中访问,而不仅仅是声明它们的组件。

    Friendaccess通常是应用程序编程元素的首选级别,Friend是接口,模块,类或结构的默认访问级别。

     

    9 In 它用于通用接口和代理。
    10 Iterator 指定函数或Get访问器是迭代器。 Aniterator对集合执行自定义迭代。
    11 Key Key关键字使您能够为匿名类型的属性指定行为。
    12 Module 指定源文件开头的属性适用于当前装配模块。 它与Module语句不同。
    13 MustInherit 指定一个类只能用来作为基类,并且你不能直接创建一个对象。
    14 MustOverride 指定属性或过程未在此类中实现,必须在导出类中重写,然后才能使用。
    15 Narrowing 表示转换运算符(CType)将类或结构转换为可能不能保存原始类或结构的某些可能值的类型。
    16 NotInheritable 指定类不能用作基类。
    17 NotOverridable 指定不能在派生类中重写属性或过程。
    18 Optional 指定当程序被调用的过程参数可以被省略。
    19 Out 对于通用类型参数,Out关键字指定类型是协变的。
    20 Overloads 指定属性或过程重新声明具有相同名称的一个或多个现有属性或过程。
    21 Overridable 指定属性或过程可以由派生类中具有相同名称的属性或过程覆盖。
    22 Overrides 指定属性或过程覆盖从基类继承的命名相同的属性或过程。
    23 ParamArray

    ParamArray允许您将任意数量的参数传递给过程。

    ParamArray参数始终使用ByVal声明。

    24 Partial 表示类或结构声明是类或结构的部分定义。
    25 Private 指定一个或多个声明的编程元素只能在其声明上下文中访问,包括来自任何包含的类型。
    26 Protected 指定一个或多个声明的编程元素只能从其自己的类或派生类中访问。
    27 Public 指定一个或多个声明的编程元素没有访问限制。
    28 ReadOnly 指定可以读取但不写入变量或属性。
    29 Shadows 指定声明的编程元素在基类中重新声明和隐藏相同命名的元素或一组重载的元素。
    30 Shared 指定一个或多个声明的编程元素与类或结构(而不是类或结构的特定实例)关联。
    31 Static 指定一个或多个已声明的局部变量将继续存在,并在声明它们的过程终止后保留其最新值。
    32 Unicode 指定Visual Basic应将所有字符串编组为Unicode值,而不考虑正在声明的外部过程的名称。
    33 Widening 表示转换运算符(CType)将类或结构转换为可以保存原始类或结构的所有可能值的类型。
    34 WithEvents 指定一个或多个声明的成员变量引用可以引发事件的类的实例。
    35 WriteOnly 指定可以写入但不读取属性。

     

     

    VB.Net - 声明

     

     

    statement 声明是Visual Basic程序中的完整指令。 它可以包含关键字,运算符,变量,字面值,常量和表达式。

    语句可以分类为:

    1、Declaration statements 声明语句 - 这些语句是您命名变量,常量或过程的语句,也可以指定数据类型。

     

    2、Executable statements 可执行语句 - 这些是启动动作的语句。 这些语句可以调用方法或函数,通过代码块循环或分支,或者将值或表达式赋值给变量或常量。 在最后一种情况下,它被称为Assignment语句。

    声明语句

     

    声明语句用于命名和定义过程、 变量、 属性、 数组和常量。当你声明的编程元素时,您还可以定义其数据类型、 访问级别和范围。

     

    您可以声明的编程元素包括变量、 常数、 枚举、 类、 结构、模块、 接口、 程序、 过程参数、 函数返回值、 外部过程的引用、 运算符、 属性、 事件和委托。

     

    以下是在 VB.Net 中的声明语句︰

    S.N 声明和说明 示例
    1

    Dim Statement

    Dim语句

    Declares and allocates storage space for one or more variables.

    声明和分配一个或多个变量的存储空间。

    Dim number As Integer
    Dim quantity As Integer = 100
    Dim message As String = "Hello!"
    
    2 Const Statement 
    Const语句

    Declares and defines one or more constants.
    声明和定义一个或多个常量。
    Const maximum As Long = 1000
    Const naturalLogBase As Object 
    = CDec(2.7182818284)
    
    3 Enum Statement 
    枚举语句

    Declares an enumeration and defines the values of its members.
    声明一个枚举并定义其成员的值。
    Enum CoffeeMugSize
        Jumbo
        ExtraLarge
        Large
        Medium
        Small
    End Enum 
    
    4

    Class Statement

    类语句

    Declares the name of a class and introduces the definition of the variables, properties, events, and procedures that the class comprises.

    声明类的名称,并引入该类包含的变量,属性,事件和过程的定义。

    Class Box
    Public length As Double
    Public breadth As Double   
    Public height As Double
    End Class
    5

    Structure Statement

    结构声明

    Declares the name of a structure and introduces the definition of the variables, properties, events, and procedures that the structure comprises.

    声明结构的名称,并引入结构所包含的变量,属性,事件和过程的定义。

    Structure Box
    Public length As Double           
    Public breadth As Double   
    Public height As Double
    End Structure
    6

    Module Statement

    模块语句

    Declares the name of a module and introduces the definition of the variables, properties, events, and procedures that the module comprises.

    声明模块的名称,并介绍模块包含的变量,属性,事件和过程的定义。

    Public Module myModule
    Sub Main()
    Dim user As String = 
    InputBox("What is your name?") 
    MsgBox("User name is" & user)
    End Sub 
    End Module
    7

    Interface Statement

    接口语句
    Declares the name of an interface and introduces the definitions of the members that the interface comprises.
    声明接口的名称,并介绍接口包含的成员的定义。

     

    Public Interface MyInterface
        Sub doSomething()
    End Interface 
    8

    Function Statement

    函数语句

    Declares the name, parameters, and code that define a Function procedure.

    声明定义函数过程的名称,参数和代码。

    Function myFunction
    (ByVal n As Integer) As Double 
        Return 5.87 * n
    End Function
    9

    Sub Statement

    子语句

    Declares the name, parameters, and code that define a Sub procedure.

    声明定义Sub过程的名称,参数和代码。

    Sub mySub(ByVal s As String)
        Return
    End Sub 
    10

    Declare Statement

    声明语句

    Declares a reference to a procedure implemented in an external file.

    声明对在外部文件中实现的过程的引用。

    Declare Function getUserName
    Lib "advapi32.dll" 
    Alias "GetUserNameA" 
    (
      ByVal lpBuffer As String, 
      ByRef nSize As Integer) As Integer 
    11

    Operator Statement

    运算符声明

    Declares the operator symbol, operands, and code that define an operator procedure on a class or structure.

    声明的运算符符号、 操作数和在类或结构定义一个运算符过程的代码。

    Public Shared Operator +
    (ByVal x As obj, ByVal y As obj) As obj
            Dim r As New obj
    ' implemention code for r = x + y
            Return r
        End Operator 
    12

    Property Statement

    属性声明

    Declares the name of a property, and the property procedures used to store and retrieve the value of the property.

    声明属性的名称,以及用于存储和检索属性值的属性过程。

    ReadOnly Property quote() As String 
        Get 
            Return quoteString
        End Get 
    End Property
    13

    Event Statement

    事件声明

    Declares a user-defined event.

    声明用户定义的事件。

    Public Event Finished()
    14

    Delegate Statement

    委托声明

    Used to declare a delegate.

    用于声明一个委托。

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double 

     

    可执行语句

     

    可执行语句执行操作。 调用过程,分支到代码中的另一个地方,循环使用几个语句或评估表达式的语句是可执行语句。 赋值语句是可执行语句的一种特殊情况。

     

    以下示例演示了一个决策语句:

    Module decisions
       Sub Main()
          'local variable definition '
          Dim a As Integer = 10
    
          ' check the boolean condition using if statement '
          If (a < 20) Then
             ' if condition is true then print the following '
             Console.WriteLine("a is less than 20")
          End If
          Console.WriteLine("value of a is : {0}", a)
          Console.ReadLine()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    a is less than 20;
    value of a is : 10

     

     

     

    VB.Net - 指令

     

     

    VB.Net编译器指令给编译器指令,以便在实际编译开始之前预处理信息。

    所有这些指令以#开头,并且在一行上的指令之前只能出现空格字符。 这些指令不是语句。
     

    VB.Net编译器没有单独的预处理器; 然而,指令被处理,就像有一个。 在VB.Net中,编译器指令用于帮助条件编译。 与C和C ++指令不同,它们不用于创建宏。

     

     

    在 VB.Net 中的编译器指令

    VB.Net提供了以下一组编译器指令:

     

    • The #Const 指令

    • The #ExternalSource 指令

    • The #If...Then...#Else 指令

    • The #Region 指令

     

     

    The#Const指令

    该指令定义条件编译常量。语法这个指令是:

    #Const constname = expression
    

     

    • constname:指定常量的名称。必要。

    • expression :它是文字或其他条件编译器常量,或包含任何或所有算术或逻辑运算符(除了Is)的组合。

     

    例如,

    #Const state = "WEST BENGAL"
    

     

    示例

    以下代码演示了伪指令的使用:

    Module mydirectives
    #Const age = True
    Sub Main()
       #If age Then
          Console.WriteLine("You are welcome to the Robotics Club")
       #End If
       Console.ReadKey()
    End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    You are welcome to the Robotics Club
    

     

    The#ExternalSource指令

     

    此指令用来指示特定行的源代码和源的外部文本之间的映射。它使用仅由编译器和调试器并不影响代码编译。

     

    此指令允许包括从外部代码文件外部的代码到一个源代码文件。

     

    此指令的语法是︰

     

    #ExternalSource( StringLiteral , IntLiteral )
        [ LogicalLine ]
    #End ExternalSource
    

    #ExternalSource伪指令的参数是外部文件的路径,第一行的行号和发生错误的行。

     

    示例

     

    以下代码演示了伪指令的使用:

    Module mydirectives
        Public Class ExternalSourceTester
    
            Sub TestExternalSource()
    
            #ExternalSource("c:vbprogsdirectives.vb", 5)
                Console.WriteLine("This is External Code. ")
            #End ExternalSource
    
            End Sub
        End Class
    
        Sub Main()
            Dim t As New ExternalSourceTester()
            t.TestExternalSource()
            Console.WriteLine("In Main.")
            Console.ReadKey()
    
        End Sub
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    This is External Code.
    In Main.
    

     

     

    The #If...Then...#Else 指令

     

    此伪指令有条件地编译所选的Visual Basic代码块。

    此伪指令的语法是:

     

    #If expression Then
       statements
    [ #ElseIf expression Then
       [ statements ]
    ...
    #ElseIf expression Then
       [ statements ] ]
    [ #Else
       [ statements ] ]
    #End If
    

     

    例如,

    #Const TargetOS = "Linux"
    #If TargetOS = "Windows 7" Then
       ' Windows 7 specific code
    #ElseIf TargetOS = "WinXP" Then
       ' Windows XP specific code
    #Else
       ' Code for other OS
    #End if
    

     

    示例

    下面的代码演示一个假设使用的指令:

    Module mydirectives
    #Const classCode = 8
    
       Sub Main()
       #If classCode = 7 Then
            Console.WriteLine("Exam Questions for Class VII")
       #ElseIf classCode = 8 Then
            Console.WriteLine("Exam Questions for Class VIII")
       #Else
            Console.WriteLine("Exam Questions for Higher Classes")
       #End If
            Console.ReadKey()
    
        End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Exam Questions for Class VIII
    

     

     

    The #Region指令

     

    此伪指令有助于在Visual Basic文件中折叠和隐藏代码段。

    此伪指令的语法是:

     

    #Region "identifier_string" 
    #End Region
    

     

    例如,

    #Region "StatsFunctions" 
        ' Insert code for the Statistical functions here.
    #End Region

     

     

     

     

    VB.Net - 运算符

     

    运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 VB.Net丰富的内置运算符,并提供以下类型的常用运算符:

    • 算术运算符

    • 比较运算符

    • 逻辑/位运算符

    • 位移位运算符

    • 赋值运算符

    • 其他运算符

     

    本教程将介绍最常用的运算符。

     

    算术运算符

    下表显示了VB.Net支持的所有算术运算符。 假设变量A保持2,变量B保持7,则:

     

    运算符 描述
    ^

    Raises one operand to the power of anothe

    将一个操作数提升为另一个的权力

    B^A will give 49
    +

    Adds two operand

    添加两个操作数s

    A + B will give 9
    - Subtracts second operand from the first
    从第一个操作数中减去第二个操作数
    A - B will give -5
    *

    Multiplies both operands

    将两个操作数相乘

    A * B will give 14
    / Divides one operand by another and returns a floating point result
    将一个操作数除以另一个操作数,并返回一个浮点结果
    B / A will give 3.5
    \ Divides one operand by another and returns an integer result
    将一个操作数除以另一个操作数,并返回一个整数结果
    B \ A will give 3
    MOD Modulus Operator and remainder of after an integer division
    模数运算符和整数除法后的余数
    B MOD A will give 1

     

    比较运算符

    下表显示了VB.Net支持的所有比较运算符。 假设变量A保持10,变量B保持20,则:

     

    运算符 描述
    = Checks if the values of two operands are equal or not; if yes, then condition becomes true.
    检查两个操作数的值是否相等; 如果是,则条件变为真。
    (A = B)是不正确的。

    <>

    Checks if the values of two operands are equal or not; if values are not equal, then condition becomes true.

    检查两个操作数的值是否相等; 如果值不相等,则条件为真。

    (AB)为真。
    > Checks if the value of left operand is greater than the value of right operand; if yes, then condition becomes true.
    检查左操作数的值是否大于右操作数的值; 如果是,则条件变为真。
    (A> B)是不正确的。
    < Checks if the value of left operand is less than the value of right operand; if yes, then condition becomes true.
    检查左操作数的值是否小于右操作数的值; 如果是,则条件变为真。
    (A <B)为真。
    > = Checks if the value of left operand is greater than or equal to the value of right operand; if yes, then condition becomes true.
    检查左操作数的值是否大于或等于右操作数的值; 如果是,则条件变为真。
    (A> = B)是不正确的。
    <= Checks if the value of left operand is less than or equal to the value of right operand; if yes, then condition becomes true.
    检查左操作数的值是否小于或等于右操作数的值; 如果是,则条件变为真。
    (A <= B)为真。

     

    除了上述情况外,VB.Net提供了三个比较运算符,我们将在以后的章节中使用; 然而,我们在这里给出一个简短的描述。


    1、Is运算符 - 它比较两个对象引用变量,并确定两个对象引用是否引用相同的对象,而不执行值比较。 如果object1和object2都引用完全相同的对象实例,则result为True; 否则,result为False。

    2、IsNot运算符 - 它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象。 如果object1和object2都引用完全相同的对象实例,则result为False; 否则,result为True。

    3、Like运算符 - 它将字符串与模式进行比较。

     

    逻辑/位运算符

    下表显示了VB.Net支持的所有逻辑运算符。 假设变量A保持布尔值True,变量B保持布尔值False,则:

     

    运算符 描述
    And It is the logical as well as bitwise AND operator. If both the operands are true, then condition becomes true. This operator does not perform short-circuiting, i.e., it evaluates both the expressions.
    它是逻辑以及按位AND运算符。 如果两个操作数都为真,则条件为真。 此运算符不执行短路,即,它评估两个表达式。
    (A和B)为假。
    Or It is the logical as well as bitwise OR operator. If any of the two operands is true, then condition becomes true. This operator does not perform short-circuiting, i.e., it evaluates both the expressions.
    它是逻辑以及按位或运算符。 如果两个操作数中的任何一个为真,则条件为真。 此运算符不执行短路,即,它评估两个表达式。
    (A或B)为真。
    Not It is the logical as well as bitwise NOT operator. Use to reverses the logical state of its operand. If a condition is true, then Logical NOT operator will make false.
    它是逻辑以及按位非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将为假。
    没有(A和B)为真。
    Xor It is the logical as well as bitwise Logical Exclusive OR operator. It returns True if both expressions are True or both expressions are False; otherwise it returns False. This operator does not perform short-circuiting, it always evaluates both expressions and there is no short-circuiting counterpart of this operator.
    它是逻辑以及按位逻辑异或运算符。 如果两个表达式都为True或两个表达式都为False,则返回True; 否则返回False。 该运算符不会执行短路,它总是评估这两个表达式,并且没有该运算符的短路对应。
    异或B为真。
    AndAlso It is the logical AND operator. It works only on Boolean data. It performs short-circuiting.
    它是逻辑 AND 运算符。它仅适用于布尔型数据。它执行短路。
    (A AndAlso运算B)为假。
    OrElse It is the logical OR operator. It works only on Boolean data. It performs short-circuiting.
    它是逻辑或运算符。 它只适用于布尔数据。 它执行短路。
    (A OrElse运算B)为真。
    IsFalse It determines whether an expression is False.
    它确定表达式是否为假。
     
    IsTrue It determines whether an expression is True.
    它确定表达式是否为真。
     

     

    位移运算符

     

    我们已经讨论了按位运算符。 位移运算符对二进制值执行移位操作。 在进入位移运算符之前,让我们来了解位操作。

    按位运算符处理位并执行逐位操作。 &,|和^的真值表如下:

     

    p q p&Q p | q p ^ Q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1

    假设A = 60; 和B = 13; 现在的二进制格式,他们将如下:

     

    A = 0011 1100

    B = 0000 1101

    -----------------

    A&B = 0000 1100

    A | B = 0011 1101

    A ^ B = 0011 0001

    〜A = 1100 0011

     

     

    我们已经看到VB.Net支持的Bitwise运算符是And,Or,Xor和Not。 位移位算子分别是用于左移和右移的>>和<<。

    假设变量A保持60,变量B保持13,则:

     

     

     

    运算符 描述 示例
    And Bitwise AND Operator copies a bit to the result if it exists in both operands.
    如果两个操作数都存在,则按位AND运算符将一个位复制到结果。
    (A AND B) will give 12, which is 0000 1100
    Or Binary OR Operator copies a bit if it exists in either operand.
    二进制OR运算符复制一个位,如果它存在于任一操作数。
    (A Or B) will give 61, which is 0011 1101
    Xor Binary XOR Operator copies the bit if it is set in one operand but not both.
    二进制XOR运算符复制该位,如果它在一个操作数中设置,但不是两个操作数。
    (A Xor B) will give 49, which is 0011 0001
    Not Binary Ones Complement Operator is unary and has the effect of 'flipping' bits.
    二进制补码运算符是一元的,具有“翻转”位的效果。
    (Not A ) will give -61, which is 1100 0011 in 2's complement form due to a signed binary number.
    << Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand.
    二进制左移位运算符。 左操作数值向左移动由右操作数指定的位数。
    A << 2 will give 240, which is 1111 0000
    >> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.
    二进制右移运算符。 左操作数值向右移动由右操作数指定的位数。
    A >> 2 will give 15, which is 0000 1111

     

    赋值运算符

    VB.Net支持以下赋值运算符:

     

    运算符 描述
    =

    Simple assignment operator, Assigns values from right side operands to left side operand

    简单赋值操作符,将值从右侧操作数分配给左侧操作数

    C = A + B A + B将赋值为C
    + = Add AND assignment operator, It adds right operand to the left operand and assigns the result to left operand
    添加AND赋值运算符,向左操作数添加右操作数,并将结果赋值给左操作数
    C + = A等于C = C + A
    - = Subtract AND assignment operator, It subtracts right operand from the left operand and assigns the result to left operand
    减法AND赋值运算符,它从左操作数中减去右操作数,并将结果赋值给左操作数
    Ç - = A等于C = C - 一个
    * = Multiply AND assignment operator, It multiplies right operand with the left operand and assigns the result to left operand
    乘法AND赋值运算符,它将右操作数与左操作数相乘,并将结果赋值给左操作数
    C * = A等于C = C * A
    / = Divide AND assignment operator, It divides left operand with the right operand and assigns the result to left operand (floating point division)
    除法AND赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数(浮点除法)
    C / = A等于C = C / A
    \ = Divide AND assignment operator, It divides left operand with the right operand and assigns the result to left operand (Integer division)
    除法AND赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数(整数除法)
    ç = A等于C = C A
    ^ = Exponentiation and assignment operator. It raises the left operand to the power of the right operand and assigns the result to left operand.
    指数和赋值运算符。 它将左操作数提升为右操作数的幂,并将结果分配给左操作数。
    C ^ = A等于C = C ^ A
    << = Left shift AND assignment operator
    左移AND赋值运算符
    C语言的<< = 2是同C = C << 2
    >> = Right shift AND assignment operator
    右移AND赋值运算符
    C >> = 2 >> 2同C = C
    &= Concatenates a String expression to a String variable or property and assigns the result to the variable or property.
    将String表达式连接到String变量或属性,并将结果分配给变量或属性。

    STR1&= STR2赛车是一样的

    STR1 = STR1与STR2

     

    其他运算符

    有很少其他重要的操作系统支持VB.Net。

     

    运算符 描述
    AddressOf Returns the address of a procedure.
    返回过程的地址。
    AddHandler Button1.Click,
    AddressOf Button1_Click
    Await It is applied to an operand in an asynchronous method or lambda expression to suspend execution of the method until the awaited task completes.
    它应用于异步方法或lambda表达式中的操作数,以暂停该方法的执行,直到等待的任务完成。
     
    Dim result As res
    = Await AsyncMethodThatReturnsResult()
    Await AsyncMethod()
    
    GetType It returns a Type object for the specified type. The Type object provides information about the type such as its properties, methods, and events.
    它返回指定类型的Type对象。 Type对象提供有关类型的信息,例如其属性,方法和事件。
    MsgBox(GetType(Integer).ToString())
    
    Function Expression It declares the parameters and code that define a function lambda expression.
    它声明定义函数lambda表达式的参数和代码。
    Dim add5 = Function(num As
     Integer) num + 5
    'prints 10
    Console.WriteLine(add5(5))
    
    If It uses short-circuit evaluation to conditionally return one of two values. The If operator can be called with three arguments or with two arguments.
    它使用短路评估有条件地返回两个值之一。 可以使用三个参数或两个参数调用If运算符。
    Dim num = 5
    Console.WriteLine(If(num >= 0,
    "Positive", "Negative"))
    

     

    VB.Net中的运算符优先级

    运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符比其他运算符具有更高的优先级; 例如,乘法运算符的优先级高于加法运算符:

    例如,x = 7 + 3 * 2; 这里,x被分配13,而不是20,因为operator *具有比+高的优先级,所以它首先乘以3 * 2,然后加到7。

    这里,具有最高优先级的运算符出现在表的顶部,具有最低优先级的运算符出现在底部。 在表达式中,将首先计算较高优先级运算符。

     

     

    运算符 优先级
    Await 最高
    Exponentiation (^)  
    Unary identity and negation (+, -)  
    Multiplication and floating-point division (*, /)  
    Integer division (\)  
    Modulus arithmetic (Mod)  
    Addition and subtraction (+, -)  
    Arithmetic bit shift (<<, >>)  
    All comparison operators (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is)  
    Negation (Not)  
    Conjunction (And, AndAlso)  
    Inclusive disjunction (Or, OrElse)  
    Exclusive disjunction (Xor) 最低

     

     

     

    VB.Net - 决策

     

     

    决策结构需要程序员指定一个或多个条件进行评估或测试程序和语句或语句的执行,如果确定的条件为真,并选择,如果确定的条件为假,则执行其它语句。

     

    以下是决策的典型结构发现在大多数编程语言的一般形式︰

     

     

    决策声明中VB.Net

     

    VB.Net提供以下类型的决策语句。 单击以下链接以检查其详细信息。

    声明 描述

    If ... Then statement

    An If...Then statement consists of a boolean expression followed by one or more statements.
    一个If...Then语句由一个布尔表达式后跟一个或多个语句组成。

    If...Then...Else statement

    An If...Then statement can be followed by an optional Else statement, which executes when the boolean expression is false.
    一个If...Then语句后面可以是一个可选的Else语句 ,当布尔表达式为假时执行。

    nested If statements

    You can use one If or Else if statement inside another If or Else if statement(s).
    您可以在一个ifelse if语句中使用If或Else if语句。

    Select Case statement

    You can use one If or Else if statement inside another If or Else if statement(s).
    Select Case语句允许根据值列表测试变量的相等性。

    nested Select Case statements

    You can use one select case statement inside another select case statement(s).
    您可以使用一个select case语句中使用一个 select case语句。

     

     

     

    VB.Net - 循环

     

     

    可能有一种情况,当你需要执行一段代码几次。 一般来说,语句是按顺序执行的:函数中的第一个语句首先执行,然后是第二个语句,依此类推。

    编程语言提供允许更复杂的执行路径的各种控制结构。
     

    循环语句允许我们多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式:

     

     

    环路结构

     

    VB.Net提供以下类型的循环来处理循环需求。 单击以下链接以检查其详细信息。

     

    循环类型 描述

    Do Loop

    It repeats the enclosed block of statements while a Boolean condition is True or until the condition becomes True. It could be terminated at any time with the Exit Do statement.
    它重复包含的语句块内布尔条件为True或直到条件变为True。 它可以随时使用Exit Do语句终止。

    For...Next

    It repeats a group of statements a specified number of times and a loop index counts the number of loop iterations as the loop executes.
    它重复指定次数的一组语句,循环索引计算循环执行时的循环迭代数。

    For Each...Next

    It repeats a group of statements for each element in a collection. This loop is used for accessing and manipulating all elements in an array or a VB.Net collection.
    它为集合中的每个元素重复一组语句。 这个循环用于访问和操作数组或VB.Net集合中的所有元素。

    While... End While

    It executes a series of statements as long as a given condition is True.
    只要给定条件为True,它就执行一系列语句。

    With... End With

    It is not exactly a looping construct. It executes a series of statements that repeatedly refer to a single object or structure.
    它不是一个循环结构。 它执行一系列重复引用单个对象或结构的语句。

    Nested loops

    You can use one or more loops inside any another While, For or Do loop.
    您可以在任何其他While,For或Do循环中使用一个或多个循环。

     

     

    循环控制语句:

     

    循环控制语句从其正常序列改变执行。 当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。

    VB.Net提供以下控制语句。 单击以下链接以检查其详细信息。

     

    控制语句 描述

    Exit statement

    Terminates the loop or select case statement and transfers execution to the statement immediately following the loop or select case.

    Continue statement

    Causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.导致循环跳过其本身的其余部分,并在重复之前立即重新测试其状态。

    GoTo statement

    Transfers control to the labeled statement. Though it is not advised to use GoTo statement in your program.

    将控制转移到带标签的语句。 虽然不建议在程序中使用GoTo语句。

     

     

     

     

     

    未完待续,下一章节,つづく

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • VB.NET入门经典(第三版).pdf

    千次下载 热门讨论 2020-07-30 23:32:37
    中文名: VB.NET入门经典 原名: Beginning Visual Basic .NET 作者: (美)威利斯 (Willis,T) (美)克罗斯兰德 (Crossland,J.)译者: 杨浩资源格式: PDF 版本: 第三版 出版社: 清华大学出版社书号: 9787302102595发行...
  • 这几天用海康威视的 SDK 开发个抓图工具,因为要求要 VS2013 ,就搞了一个来装上,发现 SDK 里面只有 java 和 C# 的 Demo ,没有 VB.net 的,起初还有点担心,因为我只熟悉 VB6 ,害怕要从头学 C# (因为担心 Java ...

        这几天用海康威视的 SDK 开发个抓图工具,因为要求要 VS2013 ,就搞了一个来装上,发现 SDK 里面只有 java 和 C# 的 Demo ,没有 VB.net 的,起初还有点担心,因为我只熟悉 VB6 ,害怕要从头学 C# (因为担心 Java 的程序不支持批处理参数输入,所以暂时选择 C#)才能搞定。怀着忐忑的心,打开 C# 的 Demo ,第一次没敢动代码编译通过了。看了一下程序结构,好不容易找到窗口编辑界面,试用了以下,才发现和 VB6 区别不大(想起来当初第一次用 VS2003 写 VB.net 程序时那个恐怖加无奈,就是我放弃 VB.net 继续用 VB6 的原因),之后看了一点点 C# 的入门教程,对照这个 Demo 一看,才发现果然语法及其类似 JS 。

        用了零零星星的10几个小时,改了一些 Demo 里面的流程参数,终于实现了我需要的功能,回过头再来看看,感觉 C# 的易用性和 VB6 相差无几,特别是窗口 UI 编辑和事件响应处理,易用性完全不是 VB.net 能比的,VB.net 那个难用简直不堪回首,4年前我用 VB.net 也是做类似的相机抓图工具,花了好几天事件才勉强整了个残次品,想想就火大。

        最后,感慨下,以其从头学用难用的 VB.net 的 难看的 class 还不如我直接就用 C# 更易上手!再也不用 VB.net 了。

        以上为本人孤陋寡闻的偏见,不喜勿喷。

        此记!

    展开全文
  • VB.NET开发者的46个忠告

    千次阅读 2018-06-29 17:13:10
    1、把VB.NET当成一门新的语言学习(和VB6没啥关系,真的); 2、看一些VB.NET的高级教程,不要因为他们很难而我们自己是初学者所以就不看; 3、不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单...
    1、把VB.NET当成一门新的语言学习(和VB6没啥关系,真的); 
    2、看一些VB.NET的高级教程,不要因为他们很难而我们自己是初学者所以就不看; 
    3、不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点; 
    4、会用VB6,并不说明你会VB.NET; 
    5、学Class并不难,XML IO、Dictionary、SOAP也不过如此——难的是长期坚持实践和不遗余力的博览群书; 
    6、如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的VB.NET水平并没有和你通关的能力一起变高——其实可以时刻记住:学VB.NET是为了编游戏的; 
    7、看VB6的书,是学不了VB.NET语言的; 
    8、浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧?! 
    9、浮躁的人容易问:我到底该学什么;——别问,学就对了; 
    10、浮躁的人容易问:XX有钱途吗;——建议你去抢银行; 
    11、浮躁的人容易说:我要中文版!我英文不行!——不行?学呀! 
    12、浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行; 
    13、浮躁的人分两种:1)只观望而不学的人;2)只学而不坚持的人; 
    14、把时髦的技术挂在嘴边,还不如把实用的技术记在心里; 
    15、VB.NET不仅仅是支持面向对象的程序设计语言; 
    16、学习编程最好的方法之一就是阅读源代码; 
    17、在任何时刻都不要认为自己手中的书已经足够了; 
    18、请阅读《VB.NET编程宝典》,掌握VB.NET标准; 
    19、看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 
    20、别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍; 
    21、不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序; 
    22、和别人一起讨论有意义的VB.NET知识点,而不是争吵XX行不行或者YY与ZZ哪个好; 
    23、请看《程序设计实践》,并严格的按照其要求去做; 
    24、不要因为VB6和VB.NET中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样; 
    25、VB.NET绝不是所谓的VB6的“扩充”——如果VB.NET一开始就起名叫Z语言,你一定不会把VB6和Z语言联系得那么紧密; 
    26、请不要认为学过XX语言再改学VB.NET会有什么问题——你只不过又在学一门全新的语言而已; 
    27、读完了《VB.NET编程宝典》后再来认定自己是不是已经学会了VB.NET; 
    28、学习编程的秘诀是:编程,编程,再编程; 
    29、记住:面向对象技术不只是VB.NET专有的; 
    30、请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码; 
    31、把在书中看到的有意义的例子扩充; 
    32、请重视VB.NET中的异常处理技术,并将其切实的运用到自己的程序中; 
    33、经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去; 
    34、不要漏掉书中任何一个练习题——请全部做完并记录下解题思路; 
    35、VB.NET语言和.NET的集成开发环境要同时学习和掌握; 
    36、既然决定了学VB.NET,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的; 
    37、就让VB.NET语言的各种平台和开发环境去激烈的竞争吧,我们要以学习VB.NET语言本身为主; 
    38、当你写VB.NET程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见39); 
    39、别心急,设计VB.NET的Class确实不容易;自己程序中的Class和自己的Class设计水平是在不断的编程实践中完善和发展的; 
    40、决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的; 
    41、每学到一个VB.NET难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了; 
    42、记录下在和别人交流时发现的自己忽视或不理解的知识点; 
    43、请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX; 
    44、保存好你写过的所有的程序——那是你最好的积累之一; 
    45、请不要做浮躁的人; 
    46、请热爱VB.NET!:)
    展开全文
  • VB.NET 教程_04_高级教程

    千次阅读 2018-08-08 01:05:04
    VB.Net - 正则表达式   正则表达式是可以与输入文本匹配的模式。 .Net框架提供了允许这种匹配的正则表达式引擎。 模式由一个或多个字符文字,运算符或构造组成。   定义正则表达式的构造 有各种类别的字符,...

     

    VB.Net - 正则表达式

     

    正则表达式是可以与输入文本匹配的模式。 .Net框架提供了允许这种匹配的正则表达式引擎。 模式由一个或多个字符文字,运算符或构造组成。

     

    定义正则表达式的构造

    有各种类别的字符,运算符和构造,允许您定义正则表达式。 单击以下链接以查找这些结构。

    • 字符转义
    • 字符类
    • 分组构造
    • 量词
    • 反向引用结构
    • 交替结构
    • 替换
    • 杂项结构

     

     

    正则表达式类

    正则表达式类用于表示一个正则表达式。

    正则表达式类有以下常用方法:

    SN 方法和说明
    1

    Public Function IsMatch (input As String) As Boolean
    公共函数IsMatch(输入作为字符串)作为布尔

    表示在正则表达式构造函数中指定的正则表达式是否发现在指定的输入字符串匹配。

    2

    Public Function IsMatch (input As String, startat As Integer ) As Boolean

    公共函数IsMatch(输入作为字符串,startat作为整数)作为布尔

    指示在Regex构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项,从字符串中指定的起始位置开始。

    3

    Public Shared Function IsMatch (input As String, pattern As String ) As Boolean

    公共共享函数IsMatch(输入作为字符串,图案作为字符串)作为布尔

    指示指定的正则表达式是否在指定的输入字符串中找到匹配项。

    4

    Public Function Matches (input As String) As MatchCollection

    公共函数匹配(输入作为字符串)作为MatchCollection

    搜索指定的输入字符串以查找正则表达式的所有出现。

    5

    Public Function Replace (input As String, replacement As String) As String

    公共函数替换(输入作为字符串,更换作为字符串)作为字符串

    在指定的输入字符串中,使用指定的替换字符串替换与正则表达式模式匹配的所有字符串。

    6

    Public Function Split (input As String) As String()

    公共函数(输入作为字符串)作为字符串()

    将输入字符串插入到由正则表达式构造函数中指定一个正则表达式模式定义的位置的子字符串数组。

    有关方法和属性的完整列表,请参阅Microsoft文档。

    示例1

    以下示例匹配以“S”开头的单词:

    Imports System.Text.RegularExpressions
    Module regexProg
       Sub showMatch(ByVal text As String, ByVal expr As String)
          Console.WriteLine("The Expression: " + expr)
          Dim mc As MatchCollection = Regex.Matches(text, expr)
          Dim m As Match
          For Each m In mc
              Console.WriteLine(m)
          Next m
       End Sub
       Sub Main()
          Dim str As String = "A Thousand Splendid Suns"
          Console.WriteLine("Matching words that start with 'S': ")
          showMatch(str, "SS*")
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Matching words that start with 'S':
    The Expression: SS*
    Splendid
    Suns
    

     

    例2

    以下示例匹配以“m”开头并以“e”结尾的单词:

    Imports System.Text.RegularExpressions
    Module regexProg
       Sub showMatch(ByVal text As String, ByVal expr As String)
          Console.WriteLine("The Expression: " + expr)
          Dim mc As MatchCollection = Regex.Matches(text, expr)
          Dim m As Match
          For Each m In mc
              Console.WriteLine(m)
          Next m
       End Sub
       Sub Main()
          Dim str As String = "make a maze and manage to measure it"
          Console.WriteLine("Matching words that start with 'm' and ends with 'e': ")
          showMatch(str, "mS*e")
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Matching words start with 'm' and ends with 'e':
    The Expression: mS*e
    make
    maze
    manage
    measure
    

     

    例3

    此示例替换了额外的空白空间:

    Imports System.Text.RegularExpressions
    Module regexProg
       Sub Main()
          Dim input As String = "Hello    World   "
          Dim pattern As String = "s+"
          Dim replacement As String = " "
          Dim rgx As Regex = New Regex(pattern)
          Dim result As String = rgx.Replace(input, replacement)
          Console.WriteLine("Original String: {0}", input)
          Console.WriteLine("Replacement String: {0}", result)
          Console.ReadKey()
       End Sub
    End Module
    

     

    当上述代码被编译和执行时,它产生了以下结果:

    Original String: Hello   World   
    Replacement String: Hello World   

     

     

    VB.Net - 数据库访问

     

     

    应用程序与数据库通信,首先,检索存储在那里的数据,并以用户友好的方式呈现它,其次,通过插入,修改和删除数据来更新数据库。

    Microsoft ActiveX Data Objects.Net(ADO.Net)是一个模型,.Net框架的一部分,由.Net应用程序用于检索,访问和更新数据。

     

     

    ADO.Net对象模型

    ADO.Net对象模型只不过是通过各种组件的结构化流程。 对象模型可以被图形描述为:

     

    ADO.Net对象

     

    通过数据提供者检索驻留在数据存储或数据库中的数据。 数据提供者的各种组件检索应用程序的数据并更新数据。

     

    应用程序通过数据集或数据读取器访问数据。

     

    • Datasets 数据集:数据集将数据存储在断开连接的缓存中,应用程序从中检索数据。

    • Data readers 数据读取:数据读取器以只读和仅转发模式向应用程序提供数据。

    数据提供程序

     

    数据提供程序用于连接到数据库、 执行命令和检索数据,将其存储在一个数据集,阅读检索到的数据和更新数据库。

     

    在 ADO.Net 数据提供程序包括以下四个对象︰

     

    SN 对象和说明
    1

    Connection

    This component is used to set up a connection with a data source.

    该组件被用来建立与数据源的连接。

    2

    Command

    A command is a SQL statement or a stored procedure used to retrieve, insert, delete or modify data in a data source.

    命令是用于检索,插入,删除或修改数据源中的数据的SQL语句或存储过程。

    3

    DataReader

    Data reader is used to retrieve data from a data source in a read-only and forward-only mode.

    数据读取器用于以只读和仅转发模式从数据源检索数据。

    4

    DataAdapter

    This is integral to the working of ADO.Net since data is transferred to and from a database through a data adapter. It retrieves data from a database into a dataset and updates the database. When changes are made to the dataset, the changes in the database are actually done by the data adapter.

    这是ADO.Net的工作的组成部分,因为数据通过数据适配器传输到数据库和从数据库传输。 它将数据从数据库检索到数据集并更新数据库。 当对数据集进行更改时,数据库中的更改实际上由数据适配器完成。

    ADO.Net中包含以下不同类型的数据提供程序

    • SQL Server的.Net Framework数据提供者 - 提供对Microsoft SQL Server的访问。

    • OLE DB的.Net Framework数据提供者 - 提供对使用OLE DB公开的数据源的访问。

    • ODBC的.Net Framework数据提供程序 - 提供对ODBC公开的数据源的访问。

    • Oracle的.Net Framework数据提供程序 - 提供对Oracle数据源的访问。

    • EntityClient提供程序 - 允许通过实体数据模型(EDM)应用程序访问数据。

     

    数据集

     

    DataSet是数据的内存表示。 它是从数据库检索的断开连接的高速缓存的记录集。 当与数据库建立连接时,数据适配器创建数据集并在其中存储数据。 在检索数据并将其存储在数据集中之后,将关闭与数据库的连接。 这被称为“断开连接的架构”。 数据集用作包含表,行和列的虚拟数据库。
     

    下图显示了数据集对象模型:

     

     

    VB.Net数据类

     

    DataSet类存在于System.Data命名空间中。 下表描述了DataSet的所有组件:

    SN 组件及说明
    1

    DataTableCollection

    It contains all the tables retrieved from the data source.

    它包含了从数据源中检索的所有表。

    2

    DataRelationCollection

    It contains relationships and the links between tables in a data set.

    它包含数据集中的表之间的关系和链接。

    3

    ExtendedProperties

    It contains additional information, like the SQL statement for retrieving data, time of retrieval, etc.

    它包含的其他信息,例如用于检索数据的SQL语句,检索的时间等

    4

    DataTable

    It represents a table in the DataTableCollection of a dataset. It consists of the DataRow and DataColumn objects. The DataTable objects are case-sensitive.

    它表示数据集的DataTableCollection中的表。它由DataRow和DataColumn对象组成。 DataTable对象区分大小写。

    5

    DataRelation

    It represents a relationship in the DataRelationshipCollection of the dataset. It is used to relate two DataTable objects to each other through the DataColumn objects.

    它表示数据集的DataRelationshipCollection中的关系。它用于通过DataColumn对象将两个DataTable对象相互关联。

    6

    DataRowCollection

    It contains all the rows in a DataTable.

    它包含DataTable中的所有行。

    7

    DataView

    It represents a fixed customized view of a DataTable for sorting, filtering, searching, editing and navigation.

    它表示用于排序,过滤,搜索,编辑和导航的DataTable的固定自定义视图。

    8

    PrimaryKey

    It represents the column that uniquely identifies a row in a DataTable.

    它表示唯一标识DataTable中某一行的列。

    9

    DataRow

    It represents a row in the DataTable. The DataRow object and its properties and methods are used to retrieve, evaluate, insert, delete, and update values in the DataTable. The NewRow method is used to create a new row and the Add method adds a row to the table.

    它表示DataTable中的一行。 DataRow对象及其属性和方法用于检索,评估,插入,删除和更新DataTable中的值。 NewRow方法用于创建一个新行,Add方法向表中添加一行。

    10

    DataColumnCollection

    It represents all the columns in a DataTable.

    它表示DataTable中的所有列。

    11

    DataColumn

    It consists of the number of columns that comprise a DataTable.

    它由组成DataTable的列数组成。

     

    连接到数据库

    .Net框架提供两种类型的Connection类:

    • SqlConnection -设计用于连接到Microsoft SQL Server。

    • OleDbConnection -设计用于连接到各种数据库,如Microsoft Access和Oracle。

    示例1

     

    我们有一个表存储在名为testDB的数据库中的名为Customers的Microsoft SQL Server中。 有关在SQL Server中创建数据库和数据库表的信息,请参考“SQL Server”教程。
     

    让我们连接到此数据库。 执行以下步骤:

     

     

    • 选择工具 - >连接到数据库

      VB.Net数据库连接实例

    • 在“添加连接”对话框中选择服务器名称和数据库名称。

      VB.Net数据库连接

    • 单击测试连接按钮以检查连接是否成功。

      连接成功

    • 在表单上添加一个DataGridView。

      VB.Net的DataGridView

    • 单击选择数据源组合框。

    • 单击添加项目数据源链接。

      添加项目数据源链接

    • 这将打开“数据源配置向导”。

    • 选择“数据库”作为数据源类型

      数据源

    • 选择的DataSet作为数据库模型。

      数据库模型

    • 选择已设置的连接。

      VB.Net数据库连接

    • 保存连接字符串。

      保存连接字符串
    • 在我们的示例中选择数据库对象Customers表,然后单击完成按钮。

      VB.Net数据库连接
    • 选择“预览数据”链接以查看“结果”网格中的数据:

      数据预览

    当使用Microsoft Visual Studio工具栏上的“开始”按钮运行应用程序时,将显示以下窗口:

    在数据网格视图VB.net数据

    示例2

    在这个例子中,让我们使用代码访问DataGridView控件中的数据。 执行以下步骤:

    • 在窗体中添加一个DataGridView控件和一个按钮。

    • 将按钮控件的文本更改为“填充”。

    • 双击按钮控件,为按钮的Click事件添加所需的代码,如下所示:

    Imports System.Data.SqlClient
    Public Class Form1
       Private Sub Form1_Load(sender As Object, e As EventArgs) _
       Handles MyBase.Load
            'TODO: This line of code loads data into the 'TestDBDataSet.CUSTOMERS' table.   You can move, or remove it, as needed.
          Me.CUSTOMERSTableAdapter.Fill(Me.TestDBDataSet.CUSTOMERS)
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspoint.com"
       End Sub
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim connection As SqlConnection = New sqlconnection()
          connection.ConnectionString = "Data Source=KABIR-DESKTOP; _
              Initial Catalog=testDB;Integrated Security=True"
          connection.Open()
          Dim adp As SqlDataAdapter = New SqlDataAdapter _
          ("select * from Customers", connection)
          Dim ds As DataSet = New DataSet()
          adp.Fill(ds)
          DataGridView1.DataSource = ds.Tables(0)
       End Sub
    End Class
    

     

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

     

    数据库连接

     

    单击“填充”按钮可显示数据网格视图控件上的表:

     

    数据库连接

     

    创建表,列和行

     



    我们已经讨论过,像DataTable,DataColumn和DataRow这样的DataSet组件允许我们分别创建表,列和行。

    下面的例子演示了这个概念:

     

     

    示例3

    到目前为止,我们已经使用我们的计算机中已经存在的表和数据库。 在本示例中,我们将创建一个表,向其中添加列,行和数据,并使用DataGridView对象显示表。

     

    执行以下步骤:

    • 在窗体中添加一个DataGridView控件和一个按钮。

    • 将按钮控件的文本更改为“填充”。

    • 在代码编辑器中添加以下代码。

    Public Class Form1
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspont.com"
       End Sub
       Private Function CreateDataSet() As DataSet
          'creating a DataSet object for tables
          Dim dataset As DataSet = New DataSet()
          ' creating the student table
          Dim Students As DataTable = CreateStudentTable()
          dataset.Tables.Add(Students)
          Return dataset
       End Function
       Private Function CreateStudentTable() As DataTable
          Dim Students As DataTable
          Students = New DataTable("Student")
          ' adding columns
          AddNewColumn(Students, "System.Int32", "StudentID")
          AddNewColumn(Students, "System.String", "StudentName")
          AddNewColumn(Students, "System.String", "StudentCity")
          ' adding rows
          AddNewRow(Students, 1, "Zara Ali", "Kolkata")
          AddNewRow(Students, 2, "Shreya Sharma", "Delhi")
          AddNewRow(Students, 3, "Rini Mukherjee", "Hyderabad")
          AddNewRow(Students, 4, "Sunil Dubey", "Bikaner")
          AddNewRow(Students, 5, "Rajat Mishra", "Patna")
          Return Students
       End Function
       Private Sub AddNewColumn(ByRef table As DataTable, _ 
       ByVal columnType As String, ByVal columnName As String)
          Dim column As DataColumn = _ 
           table.Columns.Add(columnName, Type.GetType(columnType))
       End Sub
    
       'adding data into the table
       Private Sub AddNewRow(ByRef table As DataTable, ByRef id As Integer,_
       ByRef name As String, ByRef city As String)
          Dim newrow As DataRow = table.NewRow()
          newrow("StudentID") = id
          newrow("StudentName") = name
          newrow("StudentCity") = city
          table.Rows.Add(newrow)
       End Sub
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim ds As New DataSet
          ds = CreateDataSet()
          DataGridView1.DataSource = ds.Tables("Student")
       End Sub
    End Class
    

     

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

     

    例

     

    单击“填充”按钮可显示数据网格视图控件上的表:

     

    例


     

     

     

    VB.Net - Excel工作表

     

    VB.Net提供对Microsoft Excel 2010的COM对象模型和应用程序之间的互操作性的支持。

    要在应用程序中使用此互操作性,您需要在Windows窗体应用程序中导入命名空间Microsoft.Office.Interop.Excel。

     

    从VB.Net创建一个Excel应用程序

    让我们从Microsoft Visual Studio中的以下步骤开始创建窗体表单应用程序:文件 - >新建项目 - > Windows窗体应用程序

     

    最后,选择确定,Microsoft Visual Studio创建您的项目并显示以下Form1。

     

    在窗体中插入Button控件Button1。

     

    向项目中添加对Microsoft Excel对象库的引用。 进行以下操作:

    • 从项目菜单中选择添加引用。

      添加引用

    • 在COM选项卡上,找到Microsoft Excel对象库,然后单击选择。

      COM选项卡

    • 点击OK。

     

    双击代码窗口并填充Button1的Click事件,如下所示。

    '  Add the following code snippet on top of Form1.vb
    Imports Excel = Microsoft.Office.Interop.Excel
    Public Class Form1
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim appXL As Excel.Application
          Dim wbXl As Excel.Workbook
          Dim shXL As Excel.Worksheet
          Dim raXL As Excel.Range
          ' Start Excel and get Application object.
          appXL = CreateObject("Excel.Application")
          appXL.Visible = True
          ' Add a new workbook.
          wbXl = appXL.Workbooks.Add
          shXL = wbXl.ActiveSheet
          ' Add table headers going cell by cell.
          shXL.Cells(1, 1).Value = "First Name"
          shXL.Cells(1, 2).Value = "Last Name"
          shXL.Cells(1, 3).Value = "Full Name"
          shXL.Cells(1, 4).Value = "Specialization"
          ' Format A1:D1 as bold, vertical alignment = center.
          With shXL.Range("A1", "D1")
              .Font.Bold = True
              .VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
          End With
          ' Create an array to set multiple values at once.
          Dim students(5, 2) As String
          students(0, 0) = "Zara"
          students(0, 1) = "Ali"
          students(1, 0) = "Nuha"
          students(1, 1) = "Ali"
          students(2, 0) = "Arilia"
          students(2, 1) = "RamKumar"
          students(3, 0) = "Rita"
          students(3, 1) = "Jones"
          students(4, 0) = "Umme"
          students(4, 1) = "Ayman"
          ' Fill A2:B6 with an array of values (First and Last Names).
          shXL.Range("A2", "B6").Value = students
           ' Fill C2:C6 with a relative formula (=A2 & " " & B2).
          raXL = shXL.Range("C2", "C6")
          raXL.Formula = "=A2 & "" "" & B2"
           ' Fill D2:D6 values.
          With shXL
              .Cells(2, 4).Value = "Biology"
              .Cells(3, 4).Value = "Mathmematics"
              .Cells(4, 4).Value = "Physics"
              .Cells(5, 4).Value = "Mathmematics"
              .Cells(6, 4).Value = "Arabic"
          End With
          ' AutoFit columns A:D.
          raXL = shXL.Range("A1", "D1")
          raXL.EntireColumn.AutoFit()
           ' Make sure Excel is visible and give the user control
          ' of Excel's lifetime.
          appXL.Visible = True
          appXL.UserControl = True
           ' Release object references.
          raXL = Nothing
          shXL = Nothing
          wbXl = Nothing
          appXL.Quit()
          appXL = Nothing
          Exit Sub
    Err_Handler:
          MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
       End Sub
    End Class
    

     

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

     

    VB.Net Excel的实例

     

    单击按钮将显示以下excel表。 将要求您保存工作簿。

     

    VB.Net的Excel表格结果


     

     

    VB.Net - 发送邮件

     

     

    VB.Net允许从您的应用程序发送电子邮件。 System.Net.Mail命名空间包含用于向简单邮件传输协议(SMTP)服务器发送电子邮件以进行传递的类。

     

    下表列出了一些常用的类:

    SN 描述
    1 Attachment 表示对电子邮件的附件。
    2 AttachmentCollection 存储要作为电子邮件的一部分发送的附件。
    3 MailAddress 表示电子邮件发件人或收件人的地址。
    4 MailAddressCollection 存储与电子邮件相关联的电子邮件地址。
    5 MailMessage 表示可以使用SmtpClient类发送的电子邮件。
    6 SmtpClient 允许应用程序使用简单邮件传输协议(SMTP)发送电子邮件。
    7 SmtpException 表示当SmtpClient无法完成发送或SendAsync操作时抛出的异常。

     

    SmtpClient类

     

    SmtpClient类允许应用程序使用简单邮件传输协议(SMTP)发送电子邮件。
     

    以下是SmtpClient类的一些常用属性:

    SN 属性 描述
    1 ClientCertificates 指定应使用哪些证书建立安全套接字层(SSL)连接。
    2 Credentials 获取或设置用于验证发件人的凭据。
    3 EnableSsl 指定SmtpClient是否使用安全套接字层(SSL)加密连接。
    4 Host 获取或设置用于SMTP事务的主机的名称或IP地址。
    5 Port 获取或设置用于SMTP事务的端口。
    6 Timeout 获取或设置一个值,该值指定同步发送调用超时的时间量。
    7 UseDefaultCredentials 获取或设置一个布尔值,该值控制是否随请求一起发送DefaultCredentials。

     

    以下是SmtpClient类的一些常用方法:

    SN 方法和说明
    1

    Dispose

    向SMTP服务器发送QUIT消息,正常结束TCP连接,并释放SmtpClient类的当前实例使用的所有资源。

    2

    Dispose(Boolean)

    向SMTP服务器发送QUIT消息,正常结束TCP连接,释放由SmtpClient类的当前实例使用的所有资源,并且可选地处置托管资源。

    3

    OnSendCompleted

    引发SendCompleted事件。

    4

    Send(MailMessage)

    将指定的消息发送到SMTP服务器进行传递。

    5

    Send(String,String,String,String)

    将指定的电子邮件发送到SMTP服务器进行传送。消息发件人,收件人,主题和邮件正文使用String对象指定。

    6

    SendAsync(MailMessage,Object)

    将指定的电子邮件发送到SMTP服务器进行传送。此方法不会阻止调用线程,并允许调用者将一个对象传递给操作完成时调用的方法。

    7

     

    SendAsync(String,String,String,String,Object)
    将电子邮件发送到SMTP服务器进行传送。消息发件人,收件人,主题和邮件正文使用String对象指定。此方法不会阻止调用线程,并允许调用者将一个对象传递给操作完成时调用的方法。

     

    8

    SendAsyncCancel

    取消异步操作以发送电子邮件。

    9

    SendMailAsync(MAILMESSAGE)

    发送指定消息,以交付作为异步操作的SMTP服务器。

    10

     

    SendMailAsync(MailMessage)
    将指定的消息发送到SMTP服务器以作为异步操作进行传递。

     

    11

     

    ToString
    返回表示当前对象的字符串。

     

    以下示例演示如何使用SmtpClient类发送邮件。 在这方面应注意以下几点:

    • 您必须指定用于发送电子邮件的SMTP主机服务器。 不同主机服务器的主机和端口属性将不同。 我们将使用gmail服务器。

    • 如果SMTP服务器需要,您需要授予认证凭据。

    • 您还应该分别使用MailMessage.From和MailMessage.To属性提供发件人的电子邮件地址和收件人的电子邮件地址。

    • 您还应该使用MailMessage.Body属性指定消息内容。

     

    示例

    在这个例子中,让我们创建一个发送电子邮件的简单应用程序。 执行以下步骤:

    • 在表单中添加三个标签,三个文本框和一个按钮控件。

    • 将标签的文本属性分别更改为 - “From”,“To:”和“Message:”。

    • 将文本的名称属性分别更改为txtFrom,txtTo和txtMessage。

    • 将按钮控件的文本属性更改为“发送”

    • 在代码编辑器中添加以下代码。

    Imports System.Net.Mail
    Public Class Form1
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspoint.com"
       End Sub
    
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Try
              Dim Smtp_Server As New SmtpClient
              Dim e_mail As New MailMessage()
              Smtp_Server.UseDefaultCredentials = False
              Smtp_Server.Credentials = New Net.NetworkCredential("username@gmail.com", "password")
              Smtp_Server.Port = 587
              Smtp_Server.EnableSsl = True
              Smtp_Server.Host = "smtp.gmail.com"
    
              e_mail = New MailMessage()
              e_mail.From = New MailAddress(txtFrom.Text)
              e_mail.To.Add(txtTo.Text)
              e_mail.Subject = "Email Sending"
              e_mail.IsBodyHtml = False
              e_mail.Body = txtMessage.Text
              Smtp_Server.Send(e_mail)
              MsgBox("Mail Sent")
    
          Catch error_t As Exception
              MsgBox(error_t.ToString)
          End Try
    
       End Sub
    

     

    您必须提供您的gmail地址和真实密码以获取凭据。
     

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口,您将使用该窗口发送电子邮件,自行尝试。

     

     

    从VB.Net发送电子邮件


     

     

     

     

    VB.Net - XML处理

     

     

    可扩展标记语言(XML)是一种非常类似于HTML或SGML的标记语言。 这是万维网联盟推荐的,可作为开放标准。

    .Net框架中的System.Xml命名空间包含用于处理XML文档的类。 以下是System.Xml命名空间中常用的一些类。

     

    SN 描述
    1 XmlAttribute 表示属性。属性的有效值和默认值在文档类型定义(DTD)或模式中定义。
    2 XmlCDataSection 表示一个CDATA部分。
    3 XmlCharacterData 提供由几个类使用的文本处理方法。
    4 XMLCOMMENT 表示一个XML注释的内容。
    5 XmlConvert 对XML名称进行编码和解码,并提供在公共语言运行时类型和XML模式定义语言(XSD)类型之间进行转换的方法。转换数据类型时,返回的值与语言环境无关。
    6 XmlDeclaration 表示XML声明节点<?xml version ='1.0'...?>。
    7 XmlDictionary 实现一本字典用来优化 Windows 通信基础(WCF) 的 XML 读取器/编写器实现。
    8 XmlDictionaryReader Windows Communication Foundation(WCF)从XmlReader派生来进行序列化和反序列化的抽象类。
    9 XmlDictionaryWriter 表示Windows Communication Foundation(WCF)从XmlWriter派生来进行序列化和反序列化的抽象类。
    10 XmlDocument 表示XML文档。
    11 XmlDocumentFragment 表示对树插入操作有用的轻量级对象。
    12 XmlDocumentType 表示文档类型声明。
    13 XmlElement 表示一个元素。
    14 XmlEntity 表示一个实体声明,如<!ENTITY ...>。
    15 XmlEntityReference 表示一个实体引用节点。
    16 XmlException 返回有关最后一个异常的详细信息。
    17 XmlImplementation 定义一组XmlDocument对象的上下文。
    18 XmlLinkedNode 获取此节点之前或之后的节点。
    19 XmlNode 表示XML文档中的单个节点。
    20 XmlNodeList 表示节点的有序集合。
    21 XmlNodeReader 表示提供对XmlNode中的XML数据的快速,非缓存转发访问的阅读器。
    22 XmlNotation 表示一个注释声明,如<!NOTATION ...>。
    23 XmlParserContext 提供XmlReader解析XML片段所需的所有上下文信息。
    24 XmlProcessingInstruction 表示处理指令,XML定义为在文档的文本中保留处理器特定的信息。
    25 XmlQualifiedName 表示一个XML限定名称。
    26 XmlReader 表示一个阅读器,提供了快速,非缓存,只进到XML数据访问。
    27 XmlReaderSettings 指定一组要在Create方法创建的XmlReader对象上支持的要素。
    28 XmlResolver 解析由统一资源标识符(URI)命名的外部XML资源。
    29 XmlSecureResolver 有助于通过封装XmlResolver对象并限制底层XmlResolver有权访问的资源来保护XmlResolver的另一个实现。
    30 XmlSignificantWhitespace 表示混合内容节点中的标记之间或xml:space ='preserve'范围内的空白空间中的空格。这也称为有效的空白空间。
    31 XmlText 表示元素或属性的文本内容。
    32 XmlTextReader 表示提供对XML数据的快速,非缓存,仅转发访问的阅读器。
    33 XmlTextWriter 代表作家提供了一个快速,非缓存,只进生成包含符合W3C可扩展标记语言(XML)1.0和XML中建议的命名空间XML数据流或文件的方式。
    34 XmlUrlResolver 解析由统一资源标识符(URI)命名的外部XML资源。
    35 XmlWhitespace 代表元素内容中的空白。
    36 XmlWriter 表示提供快速,非缓存,仅转发方式生成包含XML数据的流或文件的写入程序。
    37 XmlWriterSettings 指定一组要在XmlWriter.Create方法创建的XmlWriter对象上支持的要素。

     

    XML解析器的API

     

    XML数据的两个最基本和广泛使用的API是SAX和DOM接口。

    XML的简单API(SAX):在这里,您注册感兴趣的事件的回调,然后让解析器继续处理文档。这在文档很大或者有内存限制时很有用,它在从磁盘读取文件时解析文件,整个文件从不存储在内存中。

    文档对象模型(DOM)API:这是万维网联盟推荐,其中整个文件被读入存储器并以分层(基于树)的形式存储以表示XML文档的所有特征。

    SAX显然不能像使用大文件时DOM那样快速地处理信息。另一方面,使用DOM可以真正地杀死你的资源,特别是如果用于很多小文件。

    SAX是只读的,而DOM允许更改XML文件。由于这两个不同的API字面上互补,没有理由你不能使用它们两个大项目。

    对于所有的XML代码示例,让我们使用一个简单的XML文件movies.xml作为输入:

     

    <?xml version="1.0"?>
    
    <collection shelf="New Arrivals">
    <movie title="Enemy Behind">
       <type>War, Thriller</type>
       <format>DVD</format>
       <year>2003</year>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Talk about a US-Japan war</description>
    </movie>
    <movie title="Transformers">
       <type>Anime, Science Fiction</type>
       <format>DVD</format>
       <year>1989</year>
       <rating>R</rating>
       <stars>8</stars>
       <description>A schientific fiction</description>
    </movie>
       <movie title="Trigun">
       <type>Anime, Action</type>
       <format>DVD</format>
       <episodes>4</episodes>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Vash the Stampede!</description>
    </movie>
    <movie title="Ishtar">
       <type>Comedy</type>
       <format>VHS</format>
       <rating>PG</rating>
       <stars>2</stars>
       <description>Viewable boredom</description>
    </movie>
    </collection>
    

     

    解析XML使用SAX API

     

    在SAX模型中,使用XmlReader和XmlWriter类来处理XML数据。

    XmlReader类用于以快速,仅向前和非缓存方式读取XML数据。 它读取XML文档或流。

     

     

    示例1

    此示例演示从文件movies.xml中读取XML数据。

     

    执行以下步骤:

    • 将movies.xml文件添加到应用程序的bin \ Debug文件夹中。

    • 在Form1.vb文件中导入System.Xml命名空间。

    • 在表单中添加标签,并将其文字更改为“Movies Galore”。

    • 添加三个列表框和三个按钮,以显示来自xml文件的电影的标题,类型和描述。

    • 使用代码编辑器窗口添加以下代码。

    Imports System.Xml
    Public Class Form1
    
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspoint.com"
       End Sub
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          ListBox1().Items.Clear()
          Dim xr As XmlReader = XmlReader.Create("movies.xml")
          Do While xr.Read()
              If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "movie" Then
                  ListBox1.Items.Add(xr.GetAttribute(0))
              End If
          Loop
       End Sub
       Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
          ListBox2().Items.Clear()
          Dim xr As XmlReader = XmlReader.Create("movies.xml")
          Do While xr.Read()
              If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "type" Then
                  ListBox2.Items.Add(xr.ReadElementString)
              Else
                  xr.Read()
              End If
          Loop
       End Sub
       Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
          ListBox3().Items.Clear()
          Dim xr As XmlReader = XmlReader.Create("movies.xml")
          Do While xr.Read()
              If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "description" Then
                  ListBox3.Items.Add(xr.ReadElementString)
              Else
                  xr.Read()
              End If
          Loop
       End Sub
    End Class
    

    使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码。 单击按钮将显示文件中电影的标题,类型和描述。

     

    VB.Net XML处理示例1

     

    XmlWriter类用于将XML数据写入流,文件或TextWriter对象。 它也以只向前,非缓存的方式工作。

    示例2

    让我们通过在运行时添加一些数据来创建一个XML文件。 执行以下步骤:

    • 在窗体中添加WebBrowser控件和按钮控件。

    • 将按钮的Text属性更改为显示作者文件。

    • 在代码编辑器中添加以下代码。

    Imports System.Xml
    Public Class Form1
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspoint.com"
       End Sub
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim xws As XmlWriterSettings = New XmlWriterSettings()
          xws.Indent = True
          xws.NewLineOnAttributes = True
          Dim xw As XmlWriter = XmlWriter.Create("authors.xml", xws)
          xw.WriteStartDocument()
          xw.WriteStartElement("Authors")
          xw.WriteStartElement("author")
          xw.WriteAttributeString("code", "1")
          xw.WriteElementString("fname", "Zara")
          xw.WriteElementString("lname", "Ali")
          xw.WriteEndElement()
          xw.WriteStartElement("author")
          xw.WriteAttributeString("code", "2")
          xw.WriteElementString("fname", "Priya")
          xw.WriteElementString("lname", "Sharma")
          xw.WriteEndElement()
          xw.WriteStartElement("author")
          xw.WriteAttributeString("code", "3")
          xw.WriteElementString("fname", "Anshuman")
          xw.WriteElementString("lname", "Mohan")
          xw.WriteEndElement()
          xw.WriteStartElement("author")
          xw.WriteAttributeString("code", "4")
          xw.WriteElementString("fname", "Bibhuti")
          xw.WriteElementString("lname", "Banerjee")
          xw.WriteEndElement()
          xw.WriteStartElement("author")
          xw.WriteAttributeString("code", "5")
          xw.WriteElementString("fname", "Riyan")
          xw.WriteElementString("lname", "Sengupta")
          xw.WriteEndElement()
          xw.WriteEndElement()
          xw.WriteEndDocument()
          xw.Flush()
          xw.Close()
          WebBrowser1.Url = New Uri(AppDomain.CurrentDomain.BaseDirectory + "authors.xml")
       End Sub
    End Class
    

    使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码。 单击显示作者文件将在Web浏览器上显示新创建的authors.xml文件。

     

    VB.Net XML处理示例2

     

    使用DOM API解析XML

    根据文档对象模型(DOM),XML文档由节点和节点的属性组成。 XmlDocument类用于实现.Net框架的XML DOM解析器。 它还允许您通过插入,删除或更新文档中的数据来修改现有的XML文档。

     

     

    以下是XmlDocument类的一些常用方法:

    SN 方法名称和说明
    1

    AppendChild

    将指定的节点添加到此节点的子节点列表的末尾。

    2

    CreateAttribute(String)

    使用指定的名称创建XmlAttribute。

    3

    CreateComment

    创建包含指定数据的XmlComment。

    4

    CreateDefaultAttribute

    创建具有指定前缀,本地名称和命名空间URI的默认属性。

    5

    CreateElement(String)

    创建具有指定名称的元素。

    6

    CreateNode(String, String, String)

    创建具有指定节点类型,Name和NamespaceURI的XmlNode。

    7

    CreateNode(XmlNodeType, String, String)

    创建具有指定的XmlNodeType,Name和NamespaceURI的XmlNode。

    8

    CreateNode(XmlNodeType, String, String, String)

    创建具有指定的XmlNodeType,Prefix,Name和NamespaceURI的XmlNode。

    9

    CreateProcessingInstruction

    创建具有指定名称和数据的XmlProcessingInstruction。

    10

    CreateSignificantWhitespace

    创建一个XmlSignificantWhitespace节点。

    11

    createTextNode

    创建具有指定文本的XMLTEXT。

    12

    CreateWhitespace

    创建一个XmlWhitespace节点。

    13

    CreateXmlDeclaration

    创建一个具有指定值的XmlDeclaration节点。

    14

    GetElementById

    获取具有指定ID的XmlElement。

    15

    GetElementsByTagName(String)

    返回一个包含与指定名称匹配的所有后代元素的列表的XmlNodeList。

    16

    GetElementsByTagName(String, String)

    返回一个包含与指定名称匹配的所有后代元素的列表的XmlNodeList。

    17

    InsertAfter

    在指定的引用节点之后立即插入指定的节点。

    18

    InsertBefore

    在指定的引用节点之前插入指定的节点。

    19

    Load(Stream)

    从指定的流装载XML文档。

    20

    Load(String)

    从指定的TextReader加载XML文档。

    21

    Load(TextReader)

    从指定的TextReader加载XML文档。

    22

    Load(XmlReader)

    从指定的XmlReader加载XML文档。

    23

    LoadXml

    从指定的字符串加载XML文档。

    24

    PrependChild

    将指定的节点添加到此节点的子节点列表的开头。

    25

    ReadNode

    基于XmlReader中的信息创建XmlNode对象。读取器必须位于节点或属性上。

    26

    RemoveAll

    删除当前节点的所有子节点和/或属性。

    27

    RemoveChild

    删除指定的子节点。

    28

    ReplaceChild

    将子节点oldChild替换为newChild节点。

    29

    Save(Stream)

    保存XML文档到指定的流。

    30

    Save(String)

    将XML文档保存到指定的文件。

    31

    Save(TextWriter)

    将XML文档保存到指定的TextWriter。

    32

    Save(XmlWriter)

    将XML文档保存到指定的XmlWriter。

     

    示例3

    在本示例中,让我们在xml文档authors.xml中插入一些新节点,然后在列表框中显示所有作者的名字。

     

    执行以下步骤:

    • 将authors.xml文件添加到应用程序的bin / Debug文件夹中(如果您已经尝试了最后一个示例,应该在那里)

    • 导入System.Xml命名空间

    • 在表单中添加列表框和按钮控件,并将按钮控件的text属性设置为“显示作者”。

    • 使用代码编辑器添加以下代码。

    Imports System.Xml
    Public Class Form1
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          ' Set the caption bar text of the form.   
          Me.Text = "tutorialspoint.com"
       End Sub
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          ListBox1.Items.Clear()
          Dim xd As XmlDocument = New XmlDocument()
          xd.Load("authors.xml")
          Dim newAuthor As XmlElement = xd.CreateElement("author")
          newAuthor.SetAttribute("code", "6")
          Dim fn As XmlElement = xd.CreateElement("fname")
          fn.InnerText = "Bikram"
          newAuthor.AppendChild(fn)
          Dim ln As XmlElement = xd.CreateElement("lname")
          ln.InnerText = "Seth"
          newAuthor.AppendChild(ln)
          xd.DocumentElement.AppendChild(newAuthor)
          Dim tr As XmlTextWriter = New XmlTextWriter("movies.xml", Nothing)
          tr.Formatting = Formatting.Indented
          xd.WriteContentTo(tr)
          tr.Close()
          Dim nl As XmlNodeList = xd.GetElementsByTagName("fname")
          For Each node As XmlNode In nl
              ListBox1.Items.Add(node.InnerText)
          Next node
       End Sub
    End Class
    

    使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码。 单击“显示作者”按钮将显示所有作者的名字,包括我们在运行时添加的作者。

     

    VB.Net XML处理示例3


     

     

     

     

    VB.Net - Web编程

     

    动态Web应用程序包括以下两种类型的程序之一或两者:

    • 服务器端脚本 -这些是在Web服务器上执行的程序,使用服务器端脚本语言(如ASP(Active Server Pages)或JSP(Java Server Pages))编写。

    • 客户端脚本 -这些是在浏览器上执行的程序,使用脚本语言(如JavaScript,VBScript等)编写。

    ASP.Net是由Microsoft引入的ASP的.Net版本,用于通过使用服务器端脚本创建动态网页。 ASP.Net应用程序是使用.Net框架中存在的可扩展和可重用组件或对象编写的编译代码。这些代码可以使用.Net框架中的类的整个层次结构。

     

    ASP.Net应用程序代码可以用以下任何一种语言编写:

    • Visual Basic .NET

    • C#

    • Jscript脚本

    • J#

     

    在本章中,我们将简要介绍使用VB.Net编写ASP.Net应用程序。有关详细讨论,请参阅ASP.Net教程。

     

    ASP.Net内置对象

    ASP.Net有一些在Web服务器上运行的内置对象。 这些对象具有在应用程序开发中使用的方法,属性和集合。

    下表列出了具有简要说明的ASP.Net内置对象:

     

    目的 描述

    Application 

    应用

     

    描述存储与整个Web应用程序相关的信息的对象的方法,属性和集合,包括应用程序生命周期中存在的变量和对象。
    您使用此对象来存储和检索要在应用程序的所有用户之间共享的信息。例如,您可以使用Application对象来创建电子商务页面。

     

    Request

    请求

     

    描述存储与HTTP请求相关的信息的对象的方法,属性和集合。这包括表单,Cookie,服务器变量和证书数据。
    您使用此对象来访问在从浏览器到服务器的请求中发送的信息。例如,您可以使用Request对象来访问用户在HTML表单中输入的信息。

     

    Response
    响应

     

    描述存储与服务器响应相关的信息的对象的方法,属性和集合。这包括显示内容,操作标头,设置区域设置和重定向请求。
    您使用此对象向浏览器发送信息。例如,您使用Response对象将输出从脚本发送到浏览器。

     

    Server
    服务器

     

    描述提供各种服务器任务的方法的对象的方法和属性。使用这些方法,您可以执行代码,获取错误条件,编码文本字符串,创建对象供网页使用,并映射物理路径。
    您使用此对象访问服务器上的各种实用程序功能。例如,您可以使用Server对象为脚本设置超时。

     

    Session
    会话

     

    描述存储与用户会话相关的信息的对象的方法,属性和集合,包括会话生存期内存在的变量和对象。
    您使用此对象来存储和检索有关特定用户会话的信息。例如,您可以使用Session对象来保存有关用户及其首选项的信息,并跟踪待处理操作。

     

     

    ASP.Net编程模型

    ASP.Net提供两种类型的编程模型:

    • Web Forms-这使您能够创建将应用于用户界面的各种组件的用户界面和应用程序逻辑。

    • WCF Services-这使您可以远程访问一些服务器端功能。

    对于本章,您需要使用免费的Visual Studio Web Developer。 IDE与您已经用于创建Windows应用程序的IDE几乎相同。

     

    VS Web开发IDE

     

    Web表单

    Web表单包括:

    • 用户界面

    • 应用程序逻辑

     

    用户界面包括静态HTML或XML元素和ASP.Net服务器控件。 创建Web应用程序时,HTML或XML元素和服务器控件存储在具有.aspx扩展名的文件中。 此文件也称为页面文件。

    应用程序逻辑包括应用于页面中用户界面元素的代码。 你可以用任何.Net语言,如VB.Net或C#编写代码。
     

    下图显示了“设计”视图中的Web窗体:

     

     

    Web窗体

     

    示例

    让我们创建一个带有Web表单的新网站,该表单将显示用户点击按钮时的当前日期和时间。 执行以下步骤:

    • 选择文件 - >新建 - > Web站点。将出现“新建网站”对话框。

      Web窗体示例

    • 选择ASP.Net空网站模板。 键入网站的名称,然后选择保存文件的位置。

    • 您需要向站点添加默认页面。 右键单击解决方案资源管理器中的网站名称,然后从上下文菜单中选择添加新项目选项。 将显示“添加新项”对话框:

      Web窗体示例

    • 选择Web窗体选项并提供默认页面的名称。 我们把它保存为Default.aspx。 单击添加按钮。

    • 默认页面显示在源视图中

      Web窗体示例

    • 通过向“值”添加值来设置“默认”网页的标题

    • 要在网页上添加控件,请转到设计视图。 在表单上添加三个标签,一个文本框和一个按钮。

      Web窗体示例

    • 双击该按钮,并将以下代码添加到该按钮的Click事件:

    Protected Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles Button1.Click
       Label2.Visible = True
       Label2.Text = "Welcome to Tutorials Point: " + TextBox1.Text
       Label3.Text = "You visited us at: " + DateTime.Now.ToString()
    End Sub
    

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,浏览器中将打开以下页面:

     

    Web窗体示例

    输入您的姓名,然后点击提交按钮:

     

    Web窗体示例

    网页服务

     

    Web服务是一个Web应用程序,基本上是一个由其他应用程序可以使用的方法组成的类。它也遵循代码隐藏架构,如ASP.Net网页,虽然它没有用户界面。
     

    .Net Framework的早期版本使用了ASP.Net Web Service的这个概念,它具有.asmx文件扩展名。然而,从.Net Framework 4.0开始,Windows通信基础(WCF)技术已经发展成为Web Services,.Net Remoting和一些其他相关技术的新继任者。它把所有这些技术结合在一起。在下一节中,我们将简要介绍Windows Communication Foundation(WCF)。

     

     

    如果您使用先前版本的.Net Framework,您仍然可以创建传统的Web服务。有关详细说明,请参阅ASP.Net - Web服务详细说明。

     

    Windows通信基础

     

    Windows Communication Foundation或WCF提供了一个用于创建分布式面向服务的应用程序的API,称为WCF服务。

    像Web服务一样,WCF服务也支持应用程序之间的通信。但是,与Web服务不同,此处的通信不仅限于HTTP。 WCF可以配置为通过HTTP,TCP,IPC和消息队列使用。支持WCF的另一个强点是,它提供对双工通信的支持,而对于Web服务,我们只能实现单工通信。

    从初学者的角度来看,编写WCF服务与编写Web服务并不完全不同。为了保持简单,我们将看到如何:

     

    • 创建一个WCF服务

    • 创建一个服务合同并定义操作

    • 执行合同

    • 测试服务

    • 使用该服务

     

    示例

    要理解这个概念,让我们创建一个简单的服务,提供股价信息。客户可以根据股票代号查询股票的名称和价格。为了保持这个例子简单,这些值被硬编码在二维数组中。此服务将有两种方法:

    • GetPrice方法 - 它将返回股票的价格,基于提供的符号。

    • GetName方法 - 它将返回股票的名称,基于提供的符号。

     

    创建WCF服务

    执行以下步骤:

    • 打开VS Express for Web 2012

    • 选择新的网站,打开新建网站对话框。

    • 选择模板列表中的WCF服务模板:

      创建WCF服务

    • 从Web位置下拉列表中选择文件系统。

    • 提供WCF服务的名称和位置,然后单击“确定”。

    创建一个新的WCF服务。

     

    创建服务合同并定义操作

    服务契约定义服务执行的操作。 在WCF服务应用程序中,您会发现在解决方案资源管理器中的App_Code文件夹中自动创建两个文件

    • IService.vb - 这将有服务合同; 在简单的话,它将有服务的接口,与服务将提供的方法的定义,您将在您的服务中实现。

    • Service.vb - 这将实现服务合同。

      WCF服务实例

     

    用给定的代码替换IService.vb文件的代码:

    Public Interface IService
        <OperationContract()>
        Function GetPrice(ByVal symbol As String) As Double
    
        <OperationContract()>
        Function GetName(ByVal symbol As String) As String
    End Interface
    

     

    实施合同

     

    在Service.vb文件中,您将找到一个名为Service的类,它将实现在IService接口中定义的服务契约。

    使用以下代码替换IService.vb的代码:

     

    ' NOTE: You can use the "Rename" command on the context menu to change the class name "Service" in code, svc and config file together.
    Public Class Service
       Implements IService
       Public Sub New()
       End Sub
       Dim stocks As String(,) =
       {
       {"RELIND", "Reliance Industries", "1060.15"},
       {"ICICI", "ICICI Bank", "911.55"},
       {"JSW", "JSW Steel", "1201.25"},
       {"WIPRO", "Wipro Limited", "1194.65"},
       {"SATYAM", "Satyam Computers", "91.10"}
       }
    
       Public Function GetPrice(ByVal symbol As String) As Double _
       Implements IService.GetPrice
    
          Dim i As Integer
          'it takes the symbol as parameter and returns price
          For i = 0 To i = stocks.GetLength(0) - 1
    
              If (String.Compare(symbol, stocks(i, 0)) = 0) Then
                  Return Convert.ToDouble(stocks(i, 2))
              End If
          Next i
          Return 0
       End Function
    
       Public Function GetName(ByVal symbol As String) As String _
       Implements IService.GetName
    
          ' It takes the symbol as parameter and 
          ' returns name of the stock
          Dim i As Integer
          For i = 0 To i = stocks.GetLength(0) - 1
    
              If (String.Compare(symbol, stocks(i, 0)) = 0) Then
                  Return stocks(i, 1)
              End If
          Next i
          Return "Stock Not Found"
       End Function
    End Class
    

     

    测试服务

    要运行如此创建的WCF服务,请从菜单栏中选择Debug-> Start Debugging选项。 输出将是:

    WCF服务测试

     

     

    要测试服务操作,请从左窗格的树中双击操作的名称。 新的选项卡将显示在右窗格中。

    在右窗格的“请求”区域中输入参数值,然后单击“调用”按钮。
     

    下图显示了测试GetPrice操作的结果:

     

     

    WCF服务测试

     

    下图显示了测试GetName操作的结果:

     

    WCF服务测试

     

    使用服务

     

    让我们在同一个解决方案中添加一个默认页面,一个ASP.NET Web窗体,我们将使用我们刚刚创建的WCF服务。

     

    执行以下步骤:

     

    • 右键单击解决方案资源管理器中的解决方案名称,并向解决方案添加新的Web表单。 它将被命名为Default.aspx。

    • 在表单上添加两个标签,一个文本框和一个按钮。

      WCF服务利用

    • 我们需要添加一个服务引用到我们刚刚创建的WCF服务。 右键单击解决方案资源管理器中的网站,然后选择添加服务引用选项。 这将打开“添加服务引用”对话框。

    • 在地址文本框中输入服务的URL(位置),然后单击执行按钮。 它使用默认名称ServiceReference1创建服务引用。 单击确定按钮。

      添加服务引用

      添加引用为您的项目做了两个作业:

      • 在web.config文件中为服务创建地址和绑定。
      • 创建代理类以访问服务。

     

    双击表单中的“获取价格”按钮,在其Click事件上输入以下代码段:

    Partial Class _Default
       Inherits System.Web.UI.Page
    
       Protected Sub Button1_Click(sender As Object, e As EventArgs) _
       Handles Button1.Click
          Dim ser As ServiceReference1.ServiceClient = _ 
          New ServiceReference1.ServiceClient
          Label2.Text = ser.GetPrice(TextBox1.Text).ToString()
       End Sub
    End Class
    

    当使用Microsoft Visual Studio工具栏上的“开始”按钮执行并运行上述代码时,浏览器中将打开以下页面:

     

    WCF服务利用

     

    输入符号并单击获取价格按钮以获得硬编码的价格:

     

    WCF服务利用


     

     

     

    未完待续,下一章节,つづく

     

     

     

     

     

     

    展开全文
  • 如何用VB实现Modbus串行通讯

    万次阅读 2007-09-07 21:57:00
    如何用VB实现Modbus串行通讯在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB...
  • C#与西门子PLC通讯

    千次阅读 2019-07-31 01:21:45
    1.0通讯组件概述 通讯组件用于PC与可编程控制器(PLC)、智能仪表等进行数据通讯,适用于基于PC高级语言的工业自动化控制系统。组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的...
  • 进入自动化行业半年多了,每天都与机器打交道。 前段时间接手一个任务,需要将我们机台与下站机台进行通讯,我们机台是PC,下站机台为西门子S7-1200。 想想完成这个任务,领导就会对我这个新人刮目相看,然后升职...
  • VB6与VB7(VB.NET)的异同

    千次阅读 热门讨论 2016-02-01 20:25:41
    刚刚开始VB.NET的学习,就本能的直接上手了视频的学习,但实在是能力有限,不能很好的理解材料中的内容,无奈之下,就看了一些VB的pfd的文件,希望从中受益些许。  如果学过VB6,现在又转而学习VB7的人,大概都会...
  • VB与VB.NET区别

    千次阅读 热门讨论 2018-03-10 21:11:36
     当你对一件事情好奇的时候就说明你的求知欲是你最旺盛的时候,也是你效率最高的时候,为啥写这样一篇博客,因为被欺骗的太痛苦了,告诉我VB与VB.NET很相似没有什么难的,然后我就愉快的学习去了,当我抱着一样的...
  • vb.net 获取当前应用程序所在的路径

    万次阅读 2010-01-14 10:35:00
    System.Environment.CurrentDirectory; //例: c:/test/ Application.ExecutablePath;(包括名称) //例: c:/test/myapp.exe Application.StartupPath;(不包括名称) //例: c:/test/
  • vb.net中进行类强制转换

    千次阅读 2007-08-09 16:00:00
    ctype(变量,Integer) 
  • vb.net 教程 目录

    万次阅读 多人点赞 2020-07-12 17:29:11
    vb.net 教程 5-19 拓展:制作一个QQ大家来找茬和美女找茬辅助工具 (2019-11-25 16:29:53)vb.net 教程 5-20 拓展 论坛图片批量转换 (2019-11-25 16:19:31)vb.net 教程 5-21 拓展 如何给IE浏览器截图2019年11月25...
  • 方法很简单,就是引用 System.Windows.Forms. 然后在代码页面头部 Imports System.Windows.Forms 即可。 或者直接使用 System.Windows.Forms.Messagebox.show() 之后就能使用Messagebox...
  • vb.net 中调用按钮单击事件

    千次阅读 2011-06-24 08:51:00
    1.Button1.PerformClick() 2.button1_click(sender,e) 3.button1_click(nothing,nothing) 4.button1_click(sender,nothing)
  • VB.NET中的for循环

    万次阅读 2017-12-25 20:58:56
    VB.NET中的for循环 循环11次,0~10,包括0和10 Continue For结束本次循环。
  • vb.net 取得文件名、路径名、扩展名

    万次阅读 2013-09-25 14:35:01
    利用以下方法,可以轻松取得指定文件的文件名、路径名、扩展名信息   System.IO.Path.GetExtension("c:\windows\test.txt")'获取扩展名  System.IO.Path.GetFileName("c:\windows\test.txt")'获取文件名  ...
  • VB.NET 从main函数里启动窗口

    千次阅读 2014-02-12 17:08:50
    _ Public Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub
  • VB.NET通过URL POST请求和GET请求

    万次阅读 2016-05-07 09:13:33
    Public Shared Function GetData(ByVal url As String, ByVal data As String) As String Dim request As HttpWebRequest = WebRequest.Create(url + "?" + data) request.Method = "GET
  • 简要分析VB6.0和VB.NET区别

    万次阅读 热门讨论 2013-04-16 19:39:17
    现在随着VB.NET的发展,大部分人都放弃使用VB6.0而选择VB.NET,下面我们就来研究一下VB6.0和VB.NET的区别。VB.NET是微软公司在2002年推出的一种开发基于.Net平台应用程序的开发语言,也是微软公司极力推荐的一种开发...
1 2 3 4 5 ... 20
收藏数 144,320
精华内容 57,728
关键字:

vb.net