基本信息
源码名称:Visual Basic .NET 学习笔记-语法入门篇
源码大小:2.89M
文件格式:.pdf
开发语言:ASP
更新时间:2021-10-16
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
Visual Basic .NET 学习笔记-语法入门篇.pdf
本笔记旨在介绍 Visual Basic .NET 的基础语法知识和.NET 框架的一些最基本的类的使用。本笔记不专门讲 Windows 窗体等界面元素,但本笔记所描述的技术都适用于这些界面元素,或者可以说是这些界面元素的基础,如果要深入了解的话,就必须熟悉本笔记所讲的内容。
因为本笔记介绍的是最基本的语法,因此适合没有编程基本的人员阅读。如果您是初学者,建议您至少分两遍来读本笔记:第一遍通读,遇到不明白的地方暂先放下;第二遍精读,这一次要去理解每一个概念。另外,建议您多敲代码,可以照抄本笔记中的例子;在有一定的理解的时候,再尝试更改代码的内容并确认更改后效果。
Visual Basic .NET 学习笔记-语法入门篇.pdf
本笔记旨在介绍 Visual Basic .NET 的基础语法知识和.NET 框架的一些最基本的类的使用。本笔记不专门讲 Windows 窗体等界面元素,但本笔记所描述的技术都适用于这些界面元素,或者可以说是这些界面元素的基础,如果要深入了解的话,就必须熟悉本笔记所讲的内容。
因为本笔记介绍的是最基本的语法,因此适合没有编程基本的人员阅读。如果您是初学者,建议您至少分两遍来读本笔记:第一遍通读,遇到不明白的地方暂先放下;第二遍精读,这一次要去理解每一个概念。另外,建议您多敲代码,可以照抄本笔记中的例子;在有一定的理解的时候,再尝试更改代码的内容并确认更改后效果。
当然,如果有编程基础(如会 VB6.0、C#、或学过基本的 VB.NET 窗体编程),同时想要了解 Visual Basic .NET 语法的编程人员,也非常适合本笔记。
本笔记大部分都是在解释语法,而并非一开始就介绍如何实现某某功能。因为基础语法是硬功夫,不是漂亮的招式,无法立竿见影,因此需要读者有一定的耐心。另外,本笔记使用大量的例子来解释语法,而不是用专业的术语释义来阐述定义,也是为了防止读本笔记时过于枯燥无味。
【目录】
目录 前言 I 第一部分 基础语法 1 第一章 编程概念 3 第一节 编程语言起源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 机器语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 汇编语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.3 C 语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1.4 过程调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1.5 程序入口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.1.6 语言分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 第二节 面向对象语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.1 对象与类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.2 预定义与自定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.3 面向对象语言示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.4 命名空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 第三节 .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.1 库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.2 .NET 框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.3 CTS 与 CLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.4 .NET 语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.5 程序集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 第四节 Visual Basic .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.1 Visual Basic .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.2 VB.NET 与 VB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4.3 VB.NET 与 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4.4 VB.NET 的发行版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4.5 VB.NET 的代码元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.4.6 语句(语句块) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.4.7 VB.NET 程序的结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 VB.NET 学习笔记 第二章 基础知识 19 第一节 引例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.1 Hello, World! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.2 编译代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.3 运行效果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.4 代码说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 第二节 类的基本使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.1 类的声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.2 成员的定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.3 类与成员的可访问性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.4 类与成员的内部使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.5 类与成员的外部使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2.6 实例成员与共享成员 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.7 顶级类与嵌套类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2.8 模块,一个种殊的类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.9 初识 Console 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 第三节 方法的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.1 参数与返回值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.2 局部变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.3 变量的初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3.4 赋值语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.5 其它可执行语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.6 静态变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.7 共享静态变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.3.8 静态变量与私有字段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.3.9 初识数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.3.10 重载方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.3.11 方法递归调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 第四节 方法的执行顺序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.1 IF 分支结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.2 Select Case 分支结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.4.3 Do 循环 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.4.4 For 循环 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4.5 Exit 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.4.6 Return 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.4.7 Continue 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.4.8 标签与 GoTo 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.4.9 其它事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 第五节 类的继承系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.1 基类与派生类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.2 重写基类的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.5.3 重写方法的可见性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 VI 目录 2.5.4 隐藏其类的成员 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.5.5 基类与派生类的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5.6 重写、重载、隐藏 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 第三章 类型基础 61 第一节 命名空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.1 命名空间的定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.2 命名空间的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.3 全局命名空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.1.4 命名空间的规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.1.5 命名空间的设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.1.6 导入命名空间与类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.1.7 定义别名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1.8 更智能的完全限定名称解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 第二节 类型的基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.2.1 类型的根类 Sytem.Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.2.2 哈希值与相等性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.2.3 用 New 来创建对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.2.4 值类型与引用类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.2.5 值类型的基类 Sytem.ValueType . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.2.6 枚举的基类 Sytem.Enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 第三节 基元类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.3.1 基元类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.3.2 字面量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.3.3 类型字符标识符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 第四节 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.1 算数运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.2 比较运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.4.3 Like 模式匹配规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.4.4 串联运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.4.5 逻辑运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.4.6 赋值运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.4.7 空引用条件运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.4.8 杂项运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.4.9 运算符优先级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 第五节 对象类型与类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.5.1 类型对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.5.2 类型对象的类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.3 对象类型名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.4 NameOf 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.5.5 TypeOf 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.5.6 类型推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.5.7 类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 VII VB.NET 学习笔记 3.5.8 扩大转换与收缩转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.5.9 隐式转换和显式转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 第六节 初识特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.6.1 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.6.2 Obsolete 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.6.3 InternalsVisibleTo 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 第七节 结构与元组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.7.1 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.7.2 元组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.7.3 命名元组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.7.4 元组的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 3.7.5 元组的类型推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 第八节 枚举类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.8.1 枚举的定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.8.2 枚举与整型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 3.8.3 System.Enum 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 3.8.4 位标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 3.8.5 向枚举添加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 第九节 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.9.1 接口的定义与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.9.2 实现多个接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.9.3 接口的继承 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 3.9.4 继承与实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.9.5 接口与基类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 第四章 成员基础 119 第一节 常量与字段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.1.1 常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.1.2 只读字段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.1.3 常量与只读字段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 第二节 参数与返回值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 4.2.1 形参和实参 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 4.2.2 参数的传递方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4.2.3 可选参数与命名参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.2.4 参数数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 4.2.5 参数数组与可选数组参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.2.6 引用返回值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 第三节 构造函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 4.3.1 构造函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 4.3.2 构造函数的调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.3.3 重载构造函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 4.3.4 字段初始值与构造函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.3.5 值类型的构造函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 VIII 目录 4.3.6 构造函数之外的初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 4.3.7 只读字段的初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 第四节 属性过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 4.4.1 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 4.4.2 属性的可访问性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 4.4.3 属性的读写权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.4.4 自动实现属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 4.4.5 属性与字段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.4.6 有参属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.4.7 默认属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 第五节 运算符过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4.5.1 运算符的本质 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4.5.2 运算符重载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 4.5.3 比较运算符重载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 4.5.4 转换运算符(CType)重载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.5.5 运算符 IsTrue 与 IsFalse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.5.6 按位运算与逻辑运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 4.5.7 短路逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 第六节 扩展方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 4.6.1 扩展方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 4.6.2 扩展方法的优先级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.6.3 扩展方法的传值方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4.6.4 扩展方法的限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 第七节 Main 过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.7.1 Main 过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.7.2 命令行参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 4.7.3 退出代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 第八节 初识事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 4.8.1 事件的相关概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 4.8.2 事件的基本使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 4.8.3 多重绑定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 4.8.4 事件源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 4.8.5 事件的另一种模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 第五章 类型进阶 183 第一节 部分类与部分方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 5.1.1 部分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 5.1.2 部分方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 第二节 匿名类型与方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 5.2.1 匿名类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 5.2.2 键属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 5.2.3 匿名方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 第三节 字符与字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 IX VB.NET 学习笔记 5.3.1 字符类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 5.3.2 字符转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 5.3.3 字符串类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.3.4 多行字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.3.5 字符串留用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.3.6 格式化字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 5.3.7 字符串内插 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 5.3.8 可变字符字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 第四节 对象的字符串表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 5.4.1 对象的字符串表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 5.4.2 数字的字符串表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.4.3 日期的字符串表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 5.4.4 自定义字符串表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 第五节 迭代器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.5.1 IEnumerator 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.5.2 IEnumerable 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.5.3 For Each 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.5.4 迭代器方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 第六节 数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 5.6.1 数组的维度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 5.6.2 数组的初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 5.6.3 修改数组的长度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 5.6.4 数组的继承体系与转型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 5.6.5 数组的基类 System.Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 5.6.6 数组实现的接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 5.6.7 非零基数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 5.6.8 交叉数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 第七节 泛型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 5.7.1 泛型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 5.7.2 开放类型与封闭类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 5.7.3 泛型类型的继承 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 5.7.4 泛型方法的类型推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 5.7.5 泛型类型的约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 5.7.6 约束的实际作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 5.7.7 枚举约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 第八节 可空值类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 5.8.1 System.Nullable(Of T) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 5.8.2 VB.NET 对可空值类型的支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 第九节 特性(Attribute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 5.9.1 自定义特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 5.9.2 特性的使用规则定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 第十节 委托与事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 X 目录 5.10.1 委托 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 5.10.2 委托链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 5.10.3 委托的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 5.10.4 委托的本质 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 5.10.5 AddressOf 本质 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 5.10.6 Lambda 表达式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 5.10.7 复杂的 Lambda 表达式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 5.10.8 委托类型的转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 5.10.9 宽松委托转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 5.10.10 事件的背后 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 5.10.11 事件的宽松转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 5.10.12 事件陷阱 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 第六章 杂项 255 第一节 Option 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 6.1.1 Option Compare 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 6.1.2 Option Explicit 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.1.3 Option Infer 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.1.4 Option Strict 语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 第二节 预处理语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.2.1 条件编译 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.2.2 禁用警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 6.2.3 代码块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 第三节 隐式行继续标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 6.3.1 逗号分隔式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 6.3.2 闭合结构式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 6.3.3 运算符式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 6.3.4 成员访问式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 6.3.5 特性式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 6.3.6 集合式续行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 第四节 特殊注释 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.4.1 XML 注释 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.4.2 任务列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 第五节 程序集部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 6.5.1 库程序集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 6.5.2 私有部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 6.5.3 全局部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 6.5.4 强名称 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 6.5.5 为程序集签名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 6.5.6 延时签名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 6.5.7 全局程序集缓存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 XI VB.NET 学习笔记 第七章 阶段实战 269 第一节 数独求解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 7.1.1 功能分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 7.1.2 程序启动部分实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.1.3 界面的运行设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 7.1.4 绘制界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.1.5 题目的输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 7.1.6 题目的求解准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 7.1.7 数独的暴力求解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 7.1.8 数独的智能求解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 7.1.9 完整的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 附录一 VB.NET 代码约定 321 第一节 命名约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 第二节 布局约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 第三节 注释约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 第四节 其它约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 附录二 编译命令行 323 第一节 控制目标输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 第二节 指定程序入口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 第三节 编译多个文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 第四节 链接模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 第五节 添加引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 第六节 控制代码生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 第七节 源文件控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 第八节 响应文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 第九节 为程序集签名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 9.1 密钥的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 9.2 延时签名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 附录三 Visual Studio 配置与使用 331 第一节 创建项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 1.1 新建项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 1.2 添加文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 第二节 解决方案文件结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 第三节 主界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 3.1 解决方案资源管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 3.2 类视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 3.3 代码编辑器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 3.4 工具箱和属性窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 3.5 其它窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 第四节 智能提示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 XII 目录 第五节 项目属性设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 5.1 应用程序选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 5.2 编译选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 5.3 其余选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 第六节 配置管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 第七节 选项对话框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 第八节 调试程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 附录四 反编译工具 343 第一节 主界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 第二节 多模块程序集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 第三节 反编译元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 附录五 IL 指令大全 347