C#码农笔记——从第一行代码到项目实战
- ISBN:9787302602866
- 装帧:70g胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:548
- 出版时间:2022-08-01
- 条形码:9787302602866 ; 978-7-302-60286-6
本书特色
C#是一种完全面向对象、类型安全且功能强大的计算机编程语言。依托强大的.NET平台,它可用于开发运行在Windows、Linux、MacOS、移动终端(如Android手机)和物联网设备(如树莓派)上的应用程序。本书特点如下: n 知识全面 全面系统地介绍了C#的开发环境配置、语法基础、程序结构、编程技巧及编程案例。 n 实践性强 提供近300个示例,并给出两个实战案例,可将书中所学的知识融会贯通,真正教会读者开发应用程序。部分内容配有视频演示。 n 容易上手 使用通俗易懂的讲解方式,初学者也能快速入门。 n 适用面广 本书为零基础C#自学者编写,也适合作为相关培训机构的培训教材或高校计算机类专业C#语言课程的参考教材。
内容简介
本书将以基础知识为主,但同时也希望能够涉及到C#5和.net 4.5相关的技术和实用技巧。由于C#仅仅是.net平台所支持的其中一种语言,因此除了语言自身的知识外,我们也应当以统一的视角去对待,即将C#的知识与.net框架的知识进行融合。本书主要以通俗易懂的语气来向读者介绍并展示C#语言的各种优势和实用知识。同时,本书会为各个知识点配有简单而丰富的例子,侧重点是实战。书中的例子既可作为演示相关知识所用,读者也可以将其作为巩固练习。 本书内容包括:C#语言基础,但不全讲,因为微软公司为我们提供了一套很丰富的语言规范文档,本书会顺带告知读者如何运用官方的教程来参考和学习;另外,本书与.net技术融合,从基础的类型到数组、集合、泛型,再到类型转换以及协变和逆变的运用、控制台应用程序、窗体应用程序、WPF、数据管理、文件处理、应用程序域管理、反射等技术也会一并讲解。
目录
第1章 准备工作 1
1.1 为什么要编写程序 1
1.2 C#与.NET的关系 2
1.3 强大的开发工具——Visual Studio 2
1.3.1 下载和安装 2
1.3.2 认识Visual Studio 3
1.3.3 快捷键 4
1.3.4 放置子窗口 4
1.3.5 自动隐藏窗口 5
1.3.6 巧用快速启动 5
1.3.7 个性化设置 7
1.4 创建**个应用程序 9
1.5 解决方案与项目的关系 12
第2章 语法基础 13
2.1 代码的基本结构 13
2.2 命名空间 14
2.2.1 为什么要使用命名空间 14
2.2.2 如何访问命名空间中的成员 14
2.2.3 引入命名空间 15
2.2.4 using static指令 16
2.3 Main入口点 16
2.3.1 程序代码真的从Main方法开始执行吗 17
2.3.2 如何选择入口点 17
2.4 变量与常量 18
2.4.1 变量 18
2.4.2 常量 20
2.5 命名规则 20
2.6 运算符 21
2.6.1 简单运算 21
2.6.2 自增和自减运算 22
2.6.3 位运算 23
2.6.4 比较运算 24
2.7 流程控制 25
2.7.1 顺序执行 25
2.7.2 有选择地执行 25
2.7.3 循环执行 28
2.8 注释 32
2.9 基本数据类型 33
2.10 顶层语句 35
第3章 面向对象编程 37
3.1 类 37
3.1.1 字段 38
3.1.2 属性 38
3.1.3 方法 40
3.1.4 构造函数与析构函数 42
3.1.5 record类型 44
3.2 结构 45
3.3 引用类型与值类型 47
3.4 ref参数与out参数 49
3.5 方法重载 53
3.6 静态类与静态成员 54
3.7 只读字段 55
3.8 可访问性与继承性 56
3.8.1 可访问性 56
3.8.2 继承性 58
3.8.3 注意可访问性要一致 60
3.8.4 隐藏基类的成员 61
3.8.5 覆写基类成员 61
3.8.6 阻止类被继承 63
3.9 抽象类 64
3.10 接口 66
3.10.1 定义接口 67
3.10.2 接口与多继承 67
3.10.3 实现接口 68
3.10.4 显式实现接口 69
3.11 扩展方法 70
3.12 委托与事件 71
3.12.1 定义和使用委托 71
3.12.2 将方法作为参数传递 73
3.12.3 使用事件 74
3.13 枚举 78
3.13.1 使用枚举类型 78
3.13.2 获取枚举的值列表 80
3.13.3 获取枚举中各成员名称 81
3.13.4 枚举的位运算 82
3.14 特性 84
3.14.1 自定义特性 85
3.14.2 将特性应用到方法的返回值 86
3.14.3 通过反射技术检索特性 87
3.15 数组 88
3.15.1 定义数组的几种方法 88
3.15.2 多维数组 89
3.15.3 嵌套数组 91
3.15.4 复制数组 93
3.15.5 反转数组 94
3.15.6 更改数组的大小 95
3.15.7 在数组中查找元素 95
3.15.8 灵活使用ArrayList类 98
第4章 控制台应用程序 100
4.1 输出文本信息 100
4.2 获取键盘输入 102
4.2.1 Read方法 102
4.2.2 ReadKey方法 103
4.2.3 ReadLine方法 103
4.3 命令行参数 104
4.4 控制台窗口的外观 105
4.5 控制台窗口的大小和位置 106
4.6 响应CancelKeyPress事件 109
第5章 字符串处理与数学运算 111
5.1 对象的字符串表示形式 111
5.1.1 重写ToString方法 111
5.1.2 扩展方法 113
5.2 字符串的串联与拆分 114
5.2.1 使用 运算符串联字符串 114
5.2.2 使用Join方法拼接字符串数组 115
5.2.3 使用Concat方法创建字符串 115
5.2.4 使用StringBuilder类创建字符串 116
5.2.5 使用Split方法拆分字符串 118
5.3 转义字符 119
5.4 英文字母的大小写转换 121
5.5 Parse和TryParse方法 121
5.6 查找和修改字符串 123
5.6.1 查找索引 123
5.6.2 存在性查找 124
5.6.3 字符串的增、删、改 125
5.6.4 填充字符串 126
5.7 格式化字符串 127
5.7.1 IFormatProvider接口 127
5.7.2 区域性相关的信息 128
5.7.3 字符串格式化 129
5.8 字符串复合格式化 134
5.9 字符串内插 136
5.10 生成随机数 136
5.11 Math类与常用的数学运算 137
5.12 常见的时间计算 138
第6章 类型转换 140
6.1 隐式转换 140
6.2 显式转换 142
6.3 可以为null的值类型 143
6.4 引用类型的兼容性转换 144
6.5 类型转换帮助器 146
6.6 自定义转换 148
6.7 使用is运算符进行类型转换 150
第7章 泛型、集合与变体 151
7.1 泛型 151
7.1.1 泛型类 152
7.1.2 泛型接口 153
7.1.3 泛型与类型成员 154
7.1.4 泛型与委托 155
7.1.5 泛型约束 157
7.2 集合 160
7.2.1 普通集合 160
7.2.2 泛型集合 162
7.2.3 字典 168
7.3 自定义排序 172
7.4 变体 175
7.4.1 协变与逆变 176
7.4.2 类型参数的输入与输出 177
7.4.3 协变与逆变的判断技巧 180
第8章 纠错与单元测试 181
8.1 实时纠正语法错误 181
8.2 代码调试 182
8.2.1 断点法 182
8.2.2 输出信息法 184
8.3 断言 186
8.4 使用日志文件 188
8.5 异常处理 191
8.6 单元测试 195
第9章 匿名方法与Lambda表达式 199
9.1 匿名方法 199
9.2 Lambda表达式 200
9.2.1 用于赋值 200
9.2.2 用于参数传递 201
9.2.3 弃元与Lambda表达式 204
第10章 集成化查询 206
10.1 LINQ基本语法 206
10.1.1 对查询结果类型的巧妙处理 207
10.1.2 延迟执行与强制立即执行 208
10.2 筛选 210
10.3 排序 211
10.4 分组 212
10.5 更复杂的查询 216
10.5.1 动态创建类型 216
10.5.2 联合查询 217
10.5.3 嵌套查询 222
第11章 Windows窗体应用程序 225
11.1 Windows窗体应用程序的基本结构 225
11.1.1 客户区域 225
11.1.2 控件 226
11.1.3 应用程序项目 226
11.1.4 Windows消息循环 227
11.1.5 创建一个Windows窗体应用程序 230
11.2 ApplicationContext类 231
11.3 窗体设计器 233
11.4 控件的基类——Control 237
11.4.1 示例:设置控件的位置和大小 238
11.4.2 示例:设置控件的前景色和背景色 241
11.4.3 示例:调整控件的Z顺序 242
11.5 常规控件 245
11.5.1 共享事件处理程序 245
11.5.2 制作“用户登录”窗口 247
11.5.3 CheckBox与RadioButton示例 249
11.5.4 使用ListBox控件呈现对象列表 251
11.5.5 自行绘制列表控件的项 256
11.5.6 组合框 258
11.5.7 TextBox的自动完成功能 260
11.5.8 多视图列表 262
11.5.9 图像呈现控件 266
11.5.10 实时报告进度 271
11.5.11 选择日期和时间 275
11.5.12 规范用户输入 277
11.6 容器控件 281
11.6.1 在容器内部显示滚动条 281
11.6.2 分组面板 282
11.6.3 网格布局面板 283
11.6.4 选项卡 286
11.6.5 自动排列内容的面板 288
11.7 工具栏和菜单 290
11.7.1 工具栏 290
11.7.2 菜单栏 293
11.7.3 上下文菜单 296
11.7.4 自定义承载控件 297
11.8 对话框 300
11.8.1 “打开文件”和“保存文件”对话框 300
11.8.2 字体选择对话框 303
11.8.3 颜色选择对话框 304
11.8.4 自定义对话框 305
11.9 用户控件 309
11.10 自定义控件 310
第12章 WPF应用程序 315
12.1 WPF应用程序项目结构 315
12.2 XAML基础 318
12.2.1 XAML命名空间 318
12.2.2 代码隐藏 319
12.2.3 标记扩展 319
12.2.4 内容属性 321
12.3 依赖项属性 322
12.3.1 定义和使用依赖项属性 323
12.3.2 使用元数据 325
12.3.3 使用已注册的依赖项属性 329
12.3.4 只读的依赖项属性 331
12.3.5 附加属性 333
12.4 路由事件 335
12.4.1 路由策略 338
12.4.2 注册路由事件的类处理程序 340
12.5 认识WPF控件 342
12.5.1 Control类 342
12.5.2 内容控件 345
12.5.3 输入控件 352
12.6 数据绑定与视图呈现 353
12.6.1 用于数据绑定的XAML扩展标记 354
12.6.2 使用INotifyPropertyChanged接口 359
12.6.3 上下文绑定 363
12.6.4 绑定转换器 368
12.6.5 数据集合控件 369
12.6.6 数据模板 374
12.6.7 数据视图 381
12.6.8 ObservableCollection集合 389
12.7 布局 391
12.7.1 Panel类 391
12.7.2 网格布局 393
12.7.3 栈布局 395
12.7.4 停靠面板 396
12.7.5 绝对定位 397
12.7.6 自动换行 398
12.7.7 Z顺序 399
12.8 用户控件与自定义控件 400
12.9 样式与资源 406
12.9.1 样式中的触发器 408
12.9.2 资源的有效范围 409
12.9.3 合并资源字典 411
12.9.4 静态资源与动态资源 413
12.10 图形 414
12.10.1 Shape类 415
12.10.2 基本图形 418
12.11 动画 420
12.11.1 演示图板 420
12.11.2 简单动画与关键帧动画 422
第13章 异步编程 425
13.1 为什么要使用异步编程 425
13.2 使用Thread类进行异步编程 428
13.3 线程锁 429
13.4 并行任务 432
13.4.1 启动简单的并行任务 432
13.4.2 Task与Task类 436
13.4.3 创建可取消的Task 437
13.5 async和await关键字 439
13.6 ThreadLocal 443
13.7 AsyncLocal 444
13.8 通道 446
13.8.1 Channel 446
13.8.2 ChannelWriter与ChannelReader 446
13.8.3 一个简单的示例 446
13.8.4 背压模式 447
第14章 系统信息管理 449
14.1 管理进程 449
14.1.1 管理正在运行的进程 449
14.1.2 启动新进程 452
14.1.3 重定向输入/输出流 453
14.2 管理服务 455
14.3 WMI查询 461
14.4 读取系统参数 465
14.4.1 Environment类 465
14.4.2 SystemInformation类 466
14.4.3 用于WPF的系统信息类 467
14.5 写入事件日志 468
第15章 文件与流 470
15.1 创建和删除目录 470
15.2 创建和删除文件 471
15.3 流 473
15.3.1 读写文件 473
15.3.2 内存流 477
15.4 内存映射文件 479
15.5 监控文件系统的变化 482
15.6 独立存储 483
15.7 压缩与解压缩 486
第16章 序列化与反序列化 490
16.1 二进制序列化 490
16.2 XML序列化 493
16.2.1 简单实现XML序列化和反序列化 493
16.2.2 自定义XML文档的节点 494
16.3 数据协定 497
16.4 JSON序列化 500
16.5 System.Text.Json 502
16.5.1 JsonSerializer 502
16.5.2 自定义转换器 503
16.5.3 自定义属性名称 505
第17章 程序集与反射 506
17.1 类库 506
17.2 反射技术基础 509
17.2.1 动态加载程序集 509
17.2.2 获取类型信息 510
17.2.3 动态创建类型实例 511
17.2.4 动态调用类型成员 514
第18章 网络编程 518
18.1 Socket编程 518
18.1.1 Socket类 519
18.1.2 TcpListener类与TcpClient类 522
18.1.3 UdpClient类 524
18.2 HTTP通信 526
18.2.1 HttpWebRequest类与HttpWebResponse类 527
18.2.2 WebClient类 528
18.2.3 HttpClient类 529
18.3 获取网络接口信息 532
18.4 向目标计算机发送Ping命令 533
18.5 用SMTP发送电子邮件 534
第19章 互操作性 536
19.1 调用Win32 API函数 536
19.2 调用Linux系统中的库函数 539
第20章 综合实例 540
20.1 照片面积计算器 540
20.1.1 数据模型准备 540
20.1.2 让用户选择照片文件 544
20.1.3 计算所选照片的总面积 545
20.1.4 语音朗读计算结果 545
20.1.5 实现日志文件的写入 545
20.2 文件加密与解密工具 546
20.2.1 密码的处理 546
20.2.2 提取Key和IV 546
20.2.3 加密与解密 547
作者简介
周家安,微软MVP,曾从事过服装行业ERP系统的开发工作。通过自学走上编程之路,深知初学者朋友所需要的基础知识。同时,从自身的自学经历中感悟并总结出一套学习方法。著有《Python实战指南》、《深入浅出Windows 8.1应用开发》等图书。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥19.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
基于3D打印技术的产品创新设计方法
¥45.8¥88.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0