正版 C#从入门到精通(第5版)+C#高级编程(第11版):C# 7&.NET Core 2.0百度网盘pdf下载
免费下载
书籍下载
内容介绍
商品基本信息,请以下列介绍为准 | |
图书名称: |
C#从入门到精通(第5版)(软件开发视频大讲堂)
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
|
定价: | 277.8 |
ISBN号: |
C#从入门到精通(第5版)(软件开发视频大讲堂) 9787302535850
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著) 9787302522560
|
出版社: |
编辑推荐 | |
C#从入门到精通(第5版)(软件开发视频大讲堂)
“软件开发视频大讲堂”丛书是清华社计算机专业基础类零售图书最畅销的品牌之一。 (1)丛书累计销售200多万册,深受广大开发者喜爱。 (2)4本荣获“全行业优畅销书”奖,1本荣获清华社“专业畅销书”一等奖。 (3)绝大多数品种在“全国计算机零售图书排行榜”同品种排行中名列前茅。 (4)实用、易懂、资源丰富,被数百所高校选为专业课教材。 《C#从入门到精通(第5版)》学习资源及特点如下。 1. 循序渐进,实战讲述:基础知识→核心技术→高级应用→项目实战,符合认知规律。 2. 377个应用实例+159集高清微视频+108个实践练习+1个项目案例,边学边练,在实践中提升技能。 3. 超值赠送海量开发资源库资源,助力你夯实基础,精准,有效,速练,练就转岗就业不败之力。 (1)实例资源库:686个实例及源码详细分析,多练实例,多读源码,是快速学习之道。 (2)模块资源库:15个经典模块开发过程完整展现,拿来改改就能用。 (3)项目资源库:15个企业项目开发过程的完整展现,帮助你反复练习,触类旁通。 (4)测试题库系统:636道能力测试题目,由易及难,快速判断自己的真实水平,熟能生巧。 (5)面试资源库:323个企业面试真题及面试技巧,帮你进行职业规划,转岗就业不用愁。 4. 在线解答,高效学习。 8 5(1)在线答疑QQ及技术支持网站。 8 5(2)不定期进行在线直播课程。
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
C# 7内幕指南,包括高级新特性目前Visual Studio 2017提供了C# 7。发布为NuGet包的每个.NET Core部分都进行了更新。阅读这本专家级指南是经验丰富的程序员提高效率的更快捷方式。C# 7以更快的速度完成更多工作,没有人比Christian Nagel更适合传播在现实世界中极有价值的全新信息。本书论述清晰,内容完整详尽,为开发人员展示了如何将.NET引入非微软平台,如何操作这些平台上的工具,例如Docker、Gulp和NPM。 |
内容简介 | |
C#从入门到精通(第5版)(软件开发视频大讲堂)
《C#从入门到精通(第5版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用C#进行WinForm应用程序开发应该掌握的各方面技术。全书共分26章,包括初识C#及其开发环境、开始C#之旅、变量与常量、表达式与运算符、字符与字符串、流程控制语句、数组和集合、属性和方法、结构和类、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、数据访问技术、DataGridView数据控件、LINQ数据访问技术、程序调试与异常处理、面向对象技术高级应用、迭代器和分部类、泛型、文件及数据流技术、GDI+图形图像技术、Windows打印技术、网络编程技术、注册表技术、线程的使用、企业人事管理系统等内容。
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
★为需要新工具的高级开发人员介绍了C# 7和.NET Core 2.0的扩展新特性 ★揭示了Visual Studio 2017的新技巧和切合实际的提示,包括新的用户界面、新增的模板、编辑器的改进等 ★论述了计划工作流的全新方式,使编码更快,诊断和调试更精确,测试更频繁,发布更自信 ★为开发在Android、iOS、Windows、Linux、网络和云上运行的应用程序提供了循序渐进的指南 ★掌握Visual Studio的高效率特性,以加速AI革新 |
目录 | |
C#从入门到精通(第5版)(软件开发视频大讲堂)
第1篇 基础知识 第1章 初识C#及其开发环境 2 视频讲解:1小时6分钟 1.1 C#概述 3 1.1.1 C#语言及其特点 3 1.1.2 认识.NET Framework 3 1.1.3 C#与.NET框架 4 1.1.4 C#的应用领域 4 1.2 安装与卸载Visual Studio 2017 5 1.2.1 安装Visual Studio 2017必备条件 5 1.2.2 安装Visual Studio 2017 6 1.2.3 卸载Visual Studio 2017 9 1.3 熟悉Visual Studio 2017开发环境 10 1.3.1 创建项目 10 1.3.2 菜单栏 12 1.3.3 工具栏 13 1.3.4 “解决方案资源管理器”窗口 14 1.3.5 “工具箱”窗口 14 1.3.6 “属性”窗口 15 1.3.7 “错误列表”窗口 16 1.4 小结 16 第2章 开始C#之旅 17 视频讲解:1小时10分钟 2.1 编写第一个C#程序 18 2.2 初识C#程序结构 19 2.2.1 命名空间 19 2.2.2 类 20 2.2.3 Main()方法 21 2.2.4 标识符及关键字 21 2.2.5 C#语句 22 2.2.6 注释 22 2.3 程序编写规范 23 2.3.1 代码书写规则 23 2.3.2 命名规范 23 2.4 小结 25 2.5 动手纠错 26 第3章 变量与常量 27 视频讲解:2小时27分钟 3.1 变量的基本概念 28 3.2 变量的声明及赋值 28 3.2.1 声明变量 28 3.2.2 变量的赋值 29 3.2.3 变量的作用域 29 3.3 数据类型 31 3.3.1 值类型 31 3.3.2 引用类型 34 3.3.3 值类型与引用类型的区别 35 3.3.4 枚举类型 36 3.3.5 类型转换 38 3.4 常量 41 3.5 小结 42 3.6 实践与练习 42 3.7 动手纠错 42 第4章 表达式与运算符 43 视频讲解:1小时38分钟 4.1 表达式 44 4.2 运算符 44 4.2.1 算术运算符 44 4.2.2 赋值运算符 47 4.2.3 关系运算符 48 4.2.4 逻辑运算符 51 4.2.5 位运算符 53 4.2.6 其他特殊运算符 55 4.3 运算符优先级 57 4.4 小结 58 4.5 实践与练习 58 4.6 动手纠错 58 第5章 字符与字符串 59 视频讲解:2小时6分钟 5.1 字符类Char的使用 60 5.1.1 Char类概述 60 5.1.2 Char类的使用 60 5.1.3 转义字符 62 5.2 字符串类String的使用 64 5.2.1 字符串的声明及赋值 64 5.2.2 连接多个字符串 64 5.2.3 比较字符串 65 5.2.4 格式化字符串 67 5.2.5 截取字符串 69 5.2.6 分割字符串 69 5.2.7 插入和填充字符串 70 5.2.8 删除字符串 71 5.2.9 复制字符串 72 5.2.10 替换字符串 74 5.3 可变字符串类 75 5.3.1 StringBuilder类的定义 75 5.3.2 StringBuilder类的使用 75 5.3.3 StringBuilder类与String类的区别 77 5.4 小结 78 5.5 实践与练习 78 5.6 动手纠错 78 第6章 流程控制语句 79 视频讲解:1小时48分钟 6.1 条件判断语句 80 6.1.1 if语句 80 6.1.2 switch多分支语句 84 6.2 循环语句 87 6.2.1 while语句 87 6.2.2 do…while语句 90 6.2.3 for语句 91 6.2.4 foreach语句 93 6.3 跳转语句 94 6.3.1 break语句 94 6.3.2 continue语句 95 6.3.3 goto语句 96 6.3.4 return语句 98 6.4 小结 98 6.5 实践与练习 99 6.6 动手纠错 99 第7章 数组和集合 101 视频讲解:1小时47分钟 7.1 数组概述 102 7.2 一维数组的创建和使用 102 7.2.1 一维数组的创建 102 7.2.2 一维数组的初始化 104 7.2.3 一维数组的使用 104 7.3 二维数组的创建和使用 105 7.3.1 二维数组的创建 105 7.3.2 二维数组初始化 106 7.3.3 二维数组的使用 106 7.4 数组的基本操作 108 7.4.1 遍历数组 108 7.4.2 添加/删除数组元素 108 7.4.3 对数组进行排序 113 7.4.4 数组的合并与拆分 114 7.5 数组排序算法 116 7.5.1 冒泡排序 116 7.5.2 直接插入排序 118 7.5.3 选择排序法 120 7.6 ArrayList类 121 7.6.1 ArrayList类概述 121 7.6.2 ArrayList元素的添加 123 7.6.3 ArrayList元素的删除 125 7.6.4 ArrayList的遍历 127 7.6.5 ArrayList元素的查找 128 7.7 Hashtable(哈希表) 128 7.7.1 Hashtable概述 128 7.7.2 Hashtable元素的添加 129 7.7.3 Hashtable元素的删除 129 7.7.4 Hashtable的遍历 130 7.7.5 Hashtable元素的查找 131 7.8 小结 132 7.9 实践与练习 132 7.10 动手纠错 133 第8章 属性和方法 134 视频讲解:43分钟 8.1 属性 135 8.1.1 属性概述 135 8.1.2 属性的使用 136 8.2 方法 138 8.2.1 方法的声明 138 8.2.2 方法的参数类型 139 8.2.3 方法的分类 141 8.2.4 方法的重载 142 8.2.5 Main()方法 143 8.3 小结 144 8.4 实践与练习 144 8.5 动手纠错 144 第9章 结构和类 146 视频讲解:1小时6分钟 9.1 结构 147 9.1.1 结构概述 147 9.1.2 结构的使用 148 9.2 面向对象概述 149 9.2.1 对象 149 9.2.2 类 150 9.2.3 封装 151 9.2.4 继承 152 9.2.5 多态 153 9.3 类 153 9.3.1 类的概念 154 9.3.2 类的声明 154 9.3.3 构造函数和析构函数 155 9.3.4 对象的创建及使用 156 9.3.5 this关键字 160 9.3.6 类与对象的关系 161 9.4 类的面向对象特性 161 9.4.1 类的封装 161 9.4.2 类的继承 162 9.4.3 类的多态 165 9.5 小结 168 9.6 实践与练习 168 第2篇 核心技术 第10章 Windows窗体 170 视频讲解:60分钟 10.1 Form窗体 171 10.1.1 Form窗体的概念 171 10.1.2 添加和删除窗体 171 10.1.3 多窗体的使用 173 10.1.4 窗体的属性 174 10.1.5 窗体的显示与隐藏 177 10.1.6 窗体的事件 178 10.2 MDI窗体 182 10.2.1 MDI窗体的概念 182 10.2.2 如何设置MDI窗体 183 10.2.3 排列MDI子窗体 184 10.3 继承窗体 186 10.3.1 继承窗体的概念 186 10.3.2 创建继承窗体 186 10.3.3 在继承窗体中修改继承的控件属性 188 10.4 小结 189 10.5 实践与练习 189 第11章 Windows应用程序常用控件 189 视频讲解:1小时33分钟 11.1 控件概述 190 11.1.1 控件的分类及作用 190 11.1.2 控件命名规范 190 11.2 控件的相关操作 191 11.2.1 添加控件 191 11.2.2 对齐控件 192 11.2.3 锁定控件 192 11.2.4 删除控件 192 11.3 文本类控件 193 11.3.1 标签控件(Label控件) 193 11.3.2 按钮控件(Button控件) 194 11.3.3 文本框控件(TextBox控件) 196 11.3.4 有格式文本控件(RichTextBox控件) 199 11.4 选择类控件 203 11.4.1 下拉组合框控件(ComboBox控件) 203 11.4.2 复选框控件(CheckBox控件) 205 11.4.3 单选按钮控件(RadioButton控件) 207 11.4.4 数值选择控件(NumericUpDown 控件) 209 11.4.5 列表控件(ListBox控件) 211 11.5 分组类控件 214 11.5.1 容器控件(Panel控件) 214 11.5.2 分组框控件(GroupBox控件) 216 11.5.3 选项卡控件(TabControl控件) 216 11.6 菜单、工具栏和状态栏控件 221 11.6.1 菜单控件(MenuStrip控件) 221 11.6.2 工具栏控件(ToolStrip控件) 223 11.6.3 状态栏控件(StatusStrip控件) 225 11.7 小结 226 11.8 实践与练习 226 第12章 Windows应用程序高级控件 227 视频讲解:1小时11分钟 12.1 ImageList控件(存储图像控件) 228 12.1.1 在ImageList控件中添加图像 228 12.1.2 在ImageList控件中移除图像 229 12.2 ListView控件(列表视图控件) 231 12.2.1 在ListView控件中添加移除项 232 12.2.2 选择ListView控件中的项 234 12.2.3 为ListView控件中的项添加图标 235 12.2.4 在ListView控件中启用平铺视图 236 12.2.5 为ListView控件中的项分组 237 12.3 TreeView控件(树控件) 240 12.3.1 添加和删除树节点 240 12.3.2 获取树控件中选中的节点 242 12.3.3 为树控件中的节点设置图标 243 12.4 DateTimePicker控件(日期控件) 245 12.4.1 使用DateTimePicker控件显示时间 245 12.4.2 使用DateTimePicker控件以自定义格式显示日期 246 12.4.3 返回DateTimePicker控件中选择的日期 247 12.5 MonthCalendar控件(月历控件) 248 12.5.1 更改MonthCalendar控件的外观 248 12.5.2 在MonthCalendar控件中显示多个月份 249 12.5.3 在MonthCalendar控件中选择日期范围 250 12.6 其他高级控件 251 12.6.1 使用ErrorProvider控件验证文本框输入 251 12.6.2 使用HelpProvider控件调用帮助文件 253 12.6.3 使用Timer控件设置时间间隔 254 12.6.4 使用ProgressBar控件显示程序运行进度条 256 12.7 小结 257 12.8 实践与练习 257 第13章 数据访问技术 258 视频讲解:1小时46分钟 13.1 数据库基础 259 13.1.1 数据库简介 259 13.1.2 SQL语言简介 259 13.1.3 数据库的创建及删除 259 13.1.4 数据表的创建及删除 262 13.1.5 简单SQL语句的应用 264 13.2 ADO.NET简介 271 13.3 连接数据库:Connection对象 272 13.3.1 Connection对象概述 272 13.3.2 连接数据库 272 13.3.3 关闭连接 274 13.4 执行SQL语句:Command对象 276 13.4.1 Command对象概述 276 13.4.2 设置数据源类型 277 13.4.3 执行SQL语句 278 13.5 读取数据:DataReader对象 281 13.5.1 DataReader对象概述 281 13.5.2 判断查询结果中是否有值 281 13.5.3 读取数据 282 13.6 数据适配器:DataAdapter对象 283 13.6.1 DataAdapter对象概述 283 13.6.2 填充DataSet数据集 284 13.6.3 更新数据源 285 13.7 数据集:DataSet对象 287 13.7.1 DataSet对象概述 287 13.7.2 合并DataSet内容 288 13.7.3 复制DataSet内容 290 13.8 Entity Framework编程基础 291 13.8.1 什么是Entity Framework 291 13.8.2 Entity Framework实体数据模型 292 13.8.3 Entity Framework运行环境 293 13.8.4 创建实体数据模型 293 13.8.5 通过EF对数据表进行增删改查操作 297 13.9 小结 300 13.10 实践与练习 300 第14章 DataGridView数据控件 301 视频讲解:46分钟 14.1 DataGridView控件概述 302 14.2 在DataGridView控件中显示数据 302 14.3 获取DataGridView控件中的当前单元格 303 14.4 直接在DataGridView控件中修改数据 304 14.5 当选中DataGridView控件中的行时显示不同的颜色 307 14.6 禁止在DataGridView控件中添加和删除行 308 14.7 使用Columns和Rows属性添加数据 309 14.8 小结 310 14.9 实践与练习 311 第15章 LINQ数据访问技术 312 视频讲解:1小时2分钟 15.1 LINQ基础 313 15.1.1 LINQ概述 313 15.1.2 使用var创建隐型局部变量 314 15.1.3 Lambda表达式的使用 315 15.1.4 LINQ查询表达式 316 15.2 LINQ操作SQL Server数据库 318 15.2.1 使用LINQ查询SQL Server数据库 318 15.2.2 使用LINQ管理SQL Server数据库 322 15.3 LINQ操作其他数据 329 15.3.1 使用LINQ操作数组和集合 329 15.3.2 使用LINQ操作DataSet数据集 330 15.3.3 使用LINQ操作XML 332 15.4 小结 336 15.5 实践与练习 336 第16章 程序调试与异常处理 337 视频讲解:39分钟 16.1 程序调试概述 338 16.2 常用的程序调试操作 338 16.2.1 断点操作 338 16.2.2 开始执行 340 16.2.3 中断执行 341 16.2.4 停止执行 342 16.2.5 单步执行和逐过程执行 342 16.2.6 运行到指定位置 343 16.3 异常处理概述 343 16.4 异常处理语句 344 16.4.1 try…catch语句 344 16.4.2 throw语句 346 16.4.3 try…catch…finally语句 347 16.5 小结 349 16.6 实践与练习 349 第3篇 高级应用 第17章 面向对象技术高级应用 351 视频讲解:49分钟 17.1 抽象类与抽象方法 352 17.1.1 抽象类概述及声明 352 17.1.2 抽象方法概述及声明 353 17.1.3 抽象类与抽象方法的使用 354 17.2 接口 355 17.2.1 接口的概念及声明 355 17.2.2 接口的实现与继承 357 17.2.3 显式接口成员实现 360 17.2.4 抽象类与接口 361 17.3 密封类与密封方法 362 17.3.1 密封类概述及声明 362 17.3.2 密封方法概述及声明 363 17.3.3 密封类与密封方法的使用 363 17.4 委托和匿名方法 365 17.4.1 委托 365 17.4.2 匿名方法 366 17.5 事件 367 17.5.1 委托的发布和订阅 368 17.5.2 事件的发布和订阅 369 17.5.3 EventHandler类 370 17.5.4 Windows事件概述 372 17.6 小结 373 17.7 实践与练习 373 第18章 迭代器和分部类 374 视频讲解:19分钟 18.1 迭代器 375 18.1.1 迭代器概述 375 18.1.2 迭代器的使用 375 18.2 分部类 376 18.2.1 分部类概述 376 18.2.2 分部类的使用 377 18.3 小结 378 18.4 实践与练习 379 第19章 泛型 380 视频讲解:22分钟 19.1 泛型概述 381 19.2 泛型的使用 381 19.2.1 类型参数T 381 19.2.2 泛型接口 382 19.2.3 泛型方法 383 19.3 小结 384 19.4 实践与练习 384 第20章 文件及数据流技术 385 视频讲解:1小时22分钟 20.1 System.IO命名空间 386 20.1.1 File类和Directory类 386 20.1.2 FileInfo类和DirectoryInfo类 390 20.2 文件基本操作 393 20.2.1 判断文件是否存在 393 20.2.2 创建文件 394 20.2.3 复制或移动文件 395 20.2.4 删除文件 396 20.2.5 获取文件的基本信息 397 20.3 文件夹的基本操作 398 20.3.1 判断文件夹是否存在 398 20.3.2 创建文件夹 399 20.3.3 移动文件夹 400 20.3.4 删除文件夹 401 20.3.5 遍历文件夹 401 20.4 数据流 404 20.4.1 流操作类介绍 404 20.4.2 文件流类 404 20.4.3 文本文件的写入与读取 406 20.4.4 二进制文件的写入与读取 409 20.5 小结 411 20.6 实践与练习 411 第21章 GDI+图形图像技术 412 视频讲解:1小时11分钟 21.1 GDI+绘图基础 413 21.1.1 GDI+概述 413 21.1.2 创建Graphics对象 413 21.1.3 创建Pen对象 414 21.1.4 创建Brush对象 414 21.2 基本图形绘制 417 21.2.1 GDI+中的直线和矩形 417 21.2.2 GDI+中的椭圆、圆弧和扇形 419 21.2.3 GDI+中的多边形 422 21.3 GDI+绘图的应用 424 21.3.1 绘制柱形图 424 21.3.2 绘制折线图 427 21.3.3 绘制饼形图 429 21.4 小结 432 21.5 实践与练习 432 第22章 Windows打印技术 433 视频讲解:27分钟 22.1 PageSetupDialog控件 434 22.2 PrintDialog控件 436 22.3 PrintDocument控件 438 22.4 PrintPreviewControl控件 439 22.5 PrintPreviewDialog控件 440 22.6 小结 441 22.7 实践与练习 441 第23章 网络编程技术 442 视频讲解:48分钟 23.1 网络编程基础 443 23.1.1 System.Net命名空间 443 23.1.2 System.Net.Sockets命名空间 450 23.2 开发网络应用程序 457 23.2.1 创建Web页面浏览器 457 23.2.2 局域网聊天程序 458 23.3 小结 461 23.4 实践与练习 461 第24章 注册表技术 462 视频讲解:20分钟 24.1 注册表基础 463 24.1.1 Windows注册表概述 463 24.1.2 Registry和RegistryKey类 463 24.2 在C#中操作注册表 465 24.2.1 读取注册表中的信息 465 24.2.2 创建和修改注册表信息 467 24.2.3 删除注册表中的信息 470 24.3 小结 474 24.4 实践与练习 474 第25章 线程的使用 475 视频讲解:29分钟 25.1 线程简介 476 25.1.1 单线程简介 476 25.1.2 多线程简介 476 25.2 线程的基本操作 477 25.2.1 Thread类 477 25.2.2 创建线程 480 25.2.3 线程的挂起与恢复 481 25.2.4 线程休眠 482 25.2.5 终止线程 482 25.2.6 线程的优先级 484 25.2.7 线程同步 485 25.3 小结 489 25.4 实践与练习 490 第4篇 项目实战 第26章 企业人事管理系统 492 视频讲解:1小时54分钟 26.1 系统分析 493 26.1.1 需求分析 493 26.1.2 可行性分析 493 26.1.3 编写项目计划书 494 26.2 系统设计 496 26.2.1 系统目标 496 26.2.2 系统功能结构 496 26.2.3 系统业务流程图 497 26.2.4 系统编码规范 498 26.3 系统运行环境 501 26.4 数据库与数据表设计 501 26.4.1 数据库分析 502 26.4.2 创建数据库 502 26.4.3 创建数据表 505 26.4.4 数据表逻辑关系 510 26.5 创建项目 512 26.6 公共类设计 514 26.6.1 MyMeans公共类 514 26.6.2 MyModule公共类 517 26.7 登录模块设计 531 26.7.1 设计登录窗体 532 26.7.2 按Enter键时移动鼠标焦点 532 26.7.3 登录功能的实现 532 26.8 系统主窗体设计 533 26.8.1 设计菜单栏 534 26.8.2 设计工具栏 535 26.8.3 设计导航菜单 537 26.8.4 设计状态栏 538 26.9 人事档案管理模块设计 539 26.9.1 设计人事档案管理窗体 540 26.9.2 添加/修改人事档案信息 542 26.9.3 删除人事档案信息 544 26.9.4 单条件查询人事档案信息 544 26.9.5 逐条查看人事档案信息 547 26.9.6 将人事档案信息导出为Word文档 548 26.9.7 将人事档案信息导出为Excel表格 553 26.10 人事资料查询模块设计 558 26.10.1 设计人事资料查询窗体 558 26.10.2 多条件查询人事资料 559 26.11 通讯录模块设计 560 26.11.1 设计通讯录窗体 561 26.11.2 添加/修改通讯录信息 561 26.11.3 删除通讯录信息 564 26.11.4 查询通讯录信息 564 26.12 用户设置模块设计 565 26.12.1 设计用户设置窗体 565 26.12.2 添加/修改用户信息 566 26.12.3 删除用户基本信息 568 26.12.4 设置用户操作权限 568 26.13 数据库维护模块设计 569 26.13.1 设计数据库维护窗体 570 26.13.2 备份数据库 570 26.13.3 还原数据库 571 26.14 运行项目 573 26.15 开发的常见问题与解决 574 26.15.1 程序为什么会无法运行 574 26.15.2 为什么无法添加职工基本信息 574 26.15.3 选择职工头像时出现异常怎么办 576 26.15.4 数据库还原不成功应该如何解决 576 26.16 小结 576 附录 577
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
目 录第 I 部分 C# 语 言 第1 章 .NET 应用程序和工具 3 1.1 选择技术 3 1.2 回顾.NET 历史 4 1.2.1 C# 1.0——一种新语言 4 1.2.2 带有泛型的C# 2 和.NET 2 6 1.2.3 .NET 3.0——Windows Presentation Foundation 6 1.2.4 C# 3 和.NET 3.5——LINQ 6 1.2.5 C# 4 和.NET 4.0——dynamic 和TPL 7 1.2.6 C# 5 和异步编程 7 1.2.7 C# 6 和.NET Core 1.0 8 1.2.8 C# 7 和.NET Core 2.0 8 1.2.9 选择技术,继续前进 9 1.3 .NET 术语 10 1.3.1 .NET Framework 11 1.3.2 .NET Core 11 1.3.3 .NET Standard 11 1.3.4 NuGet 包 12 1.3.5 名称空间 12 1.3.6 公共语言运行库 13 1.3.7 Windows 运行库 13 1.4 用.NET Core CLI 编译 14 1.4.1 设置环境 14 1.4.2 创建应用程序 15 1.4.3 构建应用程序 16 1.4.4 运行应用程序 16 1.4.5 创建Web 应用程序 17 1.4.6 发布应用程序 17 1.5 使用Visual Studio 2017 19 1.6 应用程序类型和技术 24 1.6.1 数据访问 24 1.6.2 Windows 应用程序 24 1.6.3 Xamarin 24 1.6.4 Web 应用程序 25 1.6.5 Web API 25 1.6.6 WebHooks 和SignalR 25 1.6.7 Microsoft Azure 25 1.7 开发工具 26 1.7.1 Visual Studio Community 27 1.7.2 Visual Studio Professional 27 1.7.3 Visual Studio Enterprise 27 1.7.4 Visual Studio for Mac 27 1.7.5 Visual Studio Code 27 1.8 小结 27 第2 章 核心C# 29 2.1 C#基础 29 2.2 变量 31 2.2.1 初始化变量 31 2.2.2 类型推断 32 2.2.3 变量的作用域 33 2.2.4 常量 34 2.3 预定义数据类型 35 2.3.1 值类型和引用类型 35 2.3.2 .NET 类型 36 2.3.3 预定义的值类型 36 2.3.4 预定义的引用类型 40 2.4 程序流控制 42 2.4.1 条件语句 42 2.4.2 循环 44 2.4.3 跳转语句 47 2.5 名称空间 47 2.5.1 using 语句 48 2.5.2 名称空间的别名 49 2.6 Main()方法 49 2.7 使用注释 50 2.7.1 源文件中的内部注释 50 2.7.2 XML 文档 51 2.8 C#预处理器指令 52 2.8.1 #define 和#undef 52 2.8.2 #if、#elif、#else 和#endif 52 2.8.3 #warning 和 # error 53 2.8.4 #region 和#endregion 53 2.8.5 #line 53 2.8.6 #pragma 54 2.9 C#编程准则 54 2.9.1 关于标识符的规则 54 2.9.2 用法约定 55 2.10 小结 58 第3 章 对象和类型 59 3.1 创建及使用类 60 3.2 类和结构 60 3.3 类 61 3.3.1 字段 61 3.3.2 只读字段 61 3.3.3 属性 62 3.3.4 匿名类型 65 3.3.5 方法 66 3.3.6 构造函数 69 3.4 结构 73 3.4.1 结构是值类型 74 3.4.2 只读结构 75 3.4.3 结构和继承 75 3.4.4 结构的构造函数 75 3.4.5 ref 结构 76 3.5 按值和按引用传递参数 76 3.5.1 ref 参数 77 3.5.2 out 参数 77 3.5.3 in 参数 78 3.6 可空类型 79 3.7 枚举类型 79 3.8 部分类 81 3.9 扩展方法 83 3.10 Object 类 83 3.11 小结 84 第4 章 继承 85 4.1 面向对象 85 4.2 继承的类型 85 4.2.1 多重继承 86 4.2.2 结构和类 86 4.3 实现继承 86 4.3.1 虚方法 87 4.3.2 多态性 88 4.3.3 隐藏方法 89 4.3.4 调用方法的基类版本 90 4.3.5 抽象类和抽象方法 90 4.3.6 密封类和密封方法 91 4.3.7 派生类的构造函数 91 4.4 修饰符 93 4.4.1 访问修饰符 93 4.4.2 其他修饰符 94 4.5 接口 94 4.5.1 定义和实现接口 95 4.5.2 派生的接口 97 4.6 is 和as 运算符 98 4.7 小结 99 第5 章 泛型 100 5.1 泛型概述 100 5.1.1 性能 101 5.1.2 类型安全 102 5.1.3 二进制代码的重用 102 5.1.4 代码的扩展 102 5.1.5 命名约定 102 5.2 创建泛型类 103 5.3 泛型类的功能 105 5.3.1 默认值 106 5.3.2 约束 106 5.3.3 继承 108 5.3.4 静态成员 108 5.4 泛型接口 109 5.4.1 协变和抗变 109 5.4.2 泛型接口的协变 110 5.4.3 泛型接口的抗变 111 5.5 泛型结构 111 5.6 泛型方法 113 5.6.1 泛型方法示例 113 5.6.2 带约束的泛型方法 114 5.6.3 带委托的泛型方法 115 5.6.4 泛型方法规范 115 5.7 小结 116 第6 章 运算符和类型强制转换 117 6.1 运算符和类型转换 117 6.2 运算符 118 6.2.1 运算符的简化操作 119 6.2.2 运算符的优先级和关联性 125 6.3 使用二进制运算符 126 6.3.1 位的移动 128 6.3.2 有符号数和无符号数 128 6.4 类型的安全性 129 6.4.1 类型转换 130 6.4.2 装箱和拆箱 132 6.5 比较对象的相等性 133 6.5.1 比较引用类型的相等性 133 6.5.2 比较值类型的相等性 134 6.6 运算符重载 135 6.6.1 运算符的工作方式 135 6.6.2 运算符重载的示例:Vector 结构 136 6.6.3 比较运算符的重载 139 6.6.4 可以重载的运算符 140 6.7 实现自定义的索引运算符 141 6.8 用户定义的类型强制转换 142 6.8.1 实现用户定义的类型强制转换 143 6.8.2 多重类型强制转换 147 6.9 小结 150 第7 章 数组 151 7.1 相同类型的多个对象 151 7.2 简单数组 152 7.2.1 数组的声明 152 7.2.2 数组的初始化 152 7.2.3 访问数组元素 153 7.2.4 使用引用类型 153 7.3 多维数组 154 7.4 锯齿数组 155 7.5 Array 类 156 7.5.1 创建数组 156 7.5.2 复制数组 156 7.5.3 排序 157 7.6 数组作为参数 159 7.7 数组协变 159 7.8 枚举 160 7.8.1 IEnumerator 接口 160 7.8.2 foreach 语句 160 7.8.3 yield 语句 161 7.9 结构比较 164 7.10 Span 165 7.10.1 创建切片 166 7.10.2 使用Span 改变值 166 7.10.3 只读的Span 167 7.11 数组池 167 7.11.1 创建数组池 168 7.11.2 从池中租用内存 168 7.11.3 将内存返回给池 168 7.12 小结 169 第8 章 委托、lambda 表达式和事件 170 8.1 引用方法 170 8.2 委托 170 8.2.1 声明委托 171 8.2.2 使用委托 172 8.2.3 简单的委托示例 174 8.2.4 Action和Func委托 175 8.2.5 BubbleSorter 示例 176 8.2.6 多播委托 177 8.2.7 匿名方法 180 8.3 lambda 表达式 181 8.3.1 参数 181 8.3.2 多行代码 181 8.3.3 闭包 182 8.4 事件 182 8.4.1 事件发布程序 182 8.4.2 事件侦听器 184 8.5 小结 185 第9 章 字符串和正则表达式 186 9.1 System.String 类 187 9.1.1 构建字符串 188 9.1.2 StringBuilder 成员 190 9.2 字符串格式 190 9.2.1 字符串插值 191 9.2.2 日期时间和数字的格式 192 9.2.3 自定义字符串格式 193 9.3 正则表达式 194 9.3.1 正则表达式概述 194 9.3.2 RegularExpressionsPlayground 示例 195 9.3.3 显示结果 197 9.3.4 匹配、组和捕获 198 9.4 字符串和Span 200 9.5 小结 201 第10 章 集合 202 10.1 概述 202 10.2 集合接口和类型 203 10.3 列表 203 10.3.1 创建列表 204 10.3.2 只读集合 210 10.4 队列 210 10.5 栈 213 10.6 链表 214 10.7 有序列表 217 10.8 字典 219 10.8.1 字典初始化器 219 10.8.2 键的类型 219 10.8.3 字典示例 220 10.8.4 Lookup 类 223 10.8.5 有序字典 223 10.9 集 224 10.10 性能 225 10.11 小结 227 第11 章 特殊的集合 228 11.1 概述 228 11.2 处理位 228 11.2.1 BitArray 类 229 11.2.2 BitVector32 结构 230 11.3 可观察的集合 232 11.4 不变的集合 233 11.4.1 使用构建器和不变的集合 235 11.4.2 不变集合类型和接口 235 11.4.3 使用LINQ 和不变的数组 236 11.5 并发集合 236 11.5.1 创建管道 237 11.5.2 使用BlockingCollection 239 11.5.3 使用ConcurrentDictionary 240 11.5.4 完成管道 241 11.6 小结 242 第12 章 LINQ 243 12.1 LINQ 概述 243 12.1.1 列表和实体 244 12.1.2 LINQ 查询 246 12.1.3 扩展方法 246 12.1.4 推迟查询的执行 248 12.2 标准的查询操作符 249 12.2.1 筛选 250 12.2.2 用索引筛选 251 12.2.3 类型筛选 252 12.2.4 复合的from 子句 252 12.2.5 排序 253 12.2.6 分组 254 12.2.7 LINQ 查询中的变量 255 12.2.8 对嵌套的对象分组 255 12.2.9 内连接 256 12.2.10 左外连接 258 12.2.11 组连接 260 12.2.12 集合操作 262 12.2.13 合并 263 12.2.14 分区 264 12.2.15 聚合操作符 264 12.2.16 转换操作符 266 12.2.17 生成操作符 267 12.3 并行LINQ 267 12.3.1 并行查询 268 12.3.2 分区器 268 12.3.3 取消 269 12.4 表达式树 269 12.5 LINQ 提供程序 271 12.6 小结 272 第13 章 C#函数式编程 273 13.1 概述 273 13.1.1 避免状态突变 274 13.1.2 函数作为第一个类 275 13.2 表达式体的成员 275 13.3 扩展方法 276 13.4 using static 声明 277 13.5 本地函数 278 13.5.1 本地函数与yield 语句 279 13.5.2 递归本地函数 281 13.6 元组 282 13.6.1 元组的声明和初始化 282 13.6.2 元组解构 283 13.6.3 元组的返回 283 13.6.4 幕后的原理 284 13.6.5 ValueTuple 与元组的兼容性 285 13.6.6 推断出元组名称 285 13.6.7 元组与链表 286 13.6.8 元组和LINQ 286 13.6.9 解构 287 13.6.10 解构与扩展方法 288 13.7 模式匹配 288 13.7.1 模式匹配与is 运算符 288 13.7.2 模式匹配与switch 语句 290 13.7.3 模式匹配与泛型 291 13.8 小结 291 第14 章 错误和异常 292 14.1 简介 292 14.2 异常类 293 14.3 捕获异常 294 14.3.1 异常和性能 296 14.3.2 实现多个catch 块 296 14.3.3 在其他代码中捕获异常 299 14.3.4 System.Exception 属性 299 14.3.5 异常过滤器 299 14.3.6 重新抛出异常 300 14.3.7 没有处理异常时发生的情况 303 14.4 用户定义的异常类 303 14.4.1 捕获用户定义的异常 304 14.4.2 抛出用户定义的异常 305 14.4.3 定义用户定义的异常类 307 14.5 调用者信息 309 14.6 小结 310 第15 章 异步编程 311 15.1 异步编程的重要性 311 15.2 异步编程的.NET 历史 312 15.2.1 同步调用 312 15.2.2 异步模式 313 15.2.3 基于事件的异步模式 314 15.2.4 基于任务的异步模式 314 15.2.5 异步Main()方法 315 15.3 异步编程的基础 315 15.3.1 创建任务 316 15.3.2 调用异步方法 316 15.3.3 使用Awaiter 317 15.3.4 延续任务 317 15.3.5 同步上下文 318 15.3.6 使用多个异步方法 318 15.3.7 使用ValueTasks 319 15.3.8 转换异步模式 320 15.4 错误处理 320 15.4.1 异步方法的异常处理 321 15.4.2 多个异步方法的异常处理 321 15.4.3 使用AggregateException 信息 322 15.5 异步与Windows 应用程序 322 15.5.1 配置await 323 15.5.2 切换到UI 线程 324 15.5.3 使用IAsyncOperation 325 15.5.4 避免阻塞情况 325 15.6 小结 325 |