新書推薦:
《
世界航空地理(世界国别与区域地理研究丛书)
》
售價:HK$
244.2
《
学术的中心:英法德美
》
售價:HK$
87.4
《
为什么要读人类学
》
售價:HK$
77.3
《
井邑无衣冠 : 地方视野下的唐代精英与社会
》
售價:HK$
95.2
《
星地融合移动通信系统与关键技术从5G NTN到6G的卫星互联网发展
》
售價:HK$
212.6
《
妈妈,你好吗?(一封写给妈妈的“控诉”信,日本绘本奖作品)
》
售價:HK$
42.6
《
保守主义:为传统而战
》
售價:HK$
154.6
《
不同境遇的36岁:无尽与有限+人生半熟
》
售價:HK$
112.0
|
編輯推薦: |
你还在为选择哪本C#入门教程而犹豫不决吗?
你还在为枯燥的语法知识而伤透脑筋吗?
博客园超人气博主、微软MVP、资深.NET软件开发工程师Learning hard告诉你怎么学习C#!一书在手,C#不愁!
本书特色:
1. 《Learning hard C#学习笔记》全部是作者亲身学习经验的总结,超详尽的学习笔记,获博客园数万网友点赞推荐。
2. 《Learning hard C#学习笔记》是专门面向C#初学者的入门教程,没有枯燥的说教,而是教你如何提纲挈领,抓住核心特性,少走弯路,快速掌握C#精髓!
|
內容簡介: |
本书是一本面向C#初学者的实用教程。从开发基础开始,由浅入深地讲解了C#的基础语法和重要特性,分析了在开发中必须掌握的技术要领和经验心得。语言轻松幽默,通过精心选择的实例和详尽的代码全面介绍了C#最具特色的关键知识点,有助于初学者迅速从一个C#开发的门外汉成长为全面掌握技术要领的开发人员。
本书适合C#和.NET初学者、Web开发工程师以及计算机专业的学生阅读。
|
關於作者: |
李志,网名Learning hard,.NET资深软件开发工程师,微软C#方向的MVP,有着丰富的.NET开发经验。2012年5月开始在博客园发表.NET技术相关文章,获得了大量园友的好评,博客园排名跻身前50名。
博客地址:http:www.cnblogs.comzhili
|
目錄:
|
第1章 你真的了解C#吗1
1.1 什么是C#1
1.1.1 C#语言的发展历程1
1.1.2 C#能编写哪些应用程序3
1.2 什么是.NET Framework5
1.2.1 .NET Framework的组成5
1.2.2 C#与.NET Framework的关系7
1.2.3 C#代码的执行过程8
1.3 归纳总结9
第2章 来点C#的感觉10
2.1 开发环境的搭建10
2.2 创建“欢迎你”应用程序13
2.2.1 创建控制台项目13
2.2.2 编译和运行程序15
2.2.3 对程序进行调试18
2.3 归纳总结19
第3章 打开C#的大门——C#语言基础20
3.1 标识符和关键字20
3.1.1 标识符20
3.1.2 关键字21
3.2 基础数据类型22
3.2.1 数值类型22
3.2.2 字符串类型23
3.2.3 枚举类型24
3.2.4 结构体类型25
3.2.5 数组类型25
3.3 变量和常量26
3.3.1 变量的使用27
3.3.2 变量的作用域27
3.3.3 常量27
3.4 运算符和表达式28
3.4.1 运算符28
3.4.2 运算符优先级28
3.4.3 运算符重载29
3.4.4 表达式31
3.5 C#中的语句31
3.5.1 条件语句31
3.5.2 循环语句34
3.5.3 跳转语句37
3.6 归纳总结39
第4章 C#中的类40
4.1 什么是类40
4.2 C#中如何定义一个类40
4.3 类的成员41
4.3.1 字段41
4.3.2 属性42
4.3.3 方法45
4.3.4 构造函数48
4.3.5 析构函数52
4.3.6 索引器52
4.4 类实例化54
4.5 类与结构体的区别55
4.6 归纳总结57
第5章 首先需要明确的——C#中的面向对象编程58
5.1 封装58
5.2 继承59
5.2.1 C#中的继承60
5.2.2 密封类61
5.2.3 子类的初始化顺序61
5.3 多态62
5.3.1 使用virtual和override关键字实现方法重写63
5.3.2 阻止派生类重写虚成员65
5.3.3 使用新成员隐藏基类成员65
5.4 所有类的父类:System.object67
5.5 归纳总结67
第6章 电脑有USB接口,C#也有接口68
6.1 什么是接口68
6.2 如何使用接口来编程68
6.2.1 接口的定义68
6.2.2 继承接口70
6.2.3 调用接口中的方法71
6.3 显式接口实现方式72
6.4 接口与抽象类76
6.5 面向对象编程的应用76
6.6 归纳总结79
第7章 透过外表看本质——IL 语言80
7.1 什么是IL80
7.2 先睹为快——从“Hello World”看IL80
7.2.1 工具的介绍80
7.2.2 使用工具查看IL代码80
7.3 教你看懂IL代码85
7.3.1 IL基本类型85
7.3.2 变量的声明86
7.3.3 基本运算86
7.3.4 IL中的流程控制87
7.4 归纳总结88
第8章 正式进入C#的世界——委托89
8.1 C#委托是什么89
8.2 委托的使用90
8.3 为什么要引入委托91
8.4 委托的本质93
8.5 委托链96
8.5.1 委托链的使用96
8.5.2 从委托链中移除委托97
8.6 归纳总结98
第9章 事件揭秘99
9.1 什么是事件99
9.2 使用事件99
9.2.1 如何定义事件99
9.2.2 订阅和取消事件100
9.2.3 扩展EventArgs类104
9.3 事件的本质106
9.4 归纳总结108
第10章 深入理解类型109
10.1 C#中的类型——值类型和引用类型109
10.1.1 什么是值类型和引用类型109
10.1.2 值类型与引用类型的区别110
10.1.3 两大类型间的转换——装箱与拆箱113
10.2 参数传递问题剖析116
10.2.1 值类型参数的按值传递116
10.2.2 引用类型参数的按值传递118
10.2.3 string引用类型参数按值传递的特殊情况119
10.2.4 值类型和引用类型参数的按引用传递121
10.3 归纳总结122
第11章 使类型参数化——泛型123
11.1 泛型是什么123
11.2 C# 2.0为什么要引入泛型124
11.3 全面解析泛型128
11.3.1 类型参数128
11.3.2 泛型中的静态字段和静态函数问题129
11.3.3 类型参数的推断132
11.3.4 类型参数的约束133
11.4 归纳总结136
第12章 可空类型、匿名方法和迭代器137
12.1 可空类型137
12.1.1 可空类型简介137
12.1.2 你知道空合并操作符吗139
12.1.3 可空类型的装箱和拆箱操作141
12.2 匿名方法143
12.2.1 什么是匿名方法143
12.2.2 对变量捕捉过程的剖析145
12.3 迭代器148
12.3.1 迭代器的简介148
12.3.2 C# 1.0中如何实现迭代器148
12.3.3 C# 2.0简化了迭代器的实现150
12.3.4 迭代器的执行过程153
12.4 归纳总结153
第13章 C#的春天——C# 3.0中智能的编译器154
13.1 自动实现的属性154
13.2 隐式类型156
13.2.1 隐式类型的局部变量156
13.2.2 隐式类型数组158
13.3 对象集合初始化器159
13.4 匿名类型162
13.5 归纳总结165
第14章 不一样的编码风格——Lambda表达式166
14.1 Lambda表达式简介166
14.1.1 Lambda表达式的演变过程166
14.1.2 Lambda表达式的使用167
14.2 表达式也有树结构——表达式树169
14.2.1 动态地构造一个表达式树170
14.2.2 通过Lambda表达式来构造表达式树171
14.2.3 如何把表达式树转换成可执行代码172
14.3 归纳总结173
第15章 使类的扩展更简单——扩展方法174
15.1 什么是扩展方法174
15.2 扩展方法的使用174
15.2.1 定义扩展方法174
15.2.2 调用扩展方法177
15.3 编译器如何发现扩展方法177
15.4 空引用也可调用扩展方法182
15.4.1 拿例子说话182
15.4.2 空引用上调用扩展方法揭秘183
15.5 归纳总结184
第16章 数据操作So easy——LINQ解析185
16.1 LINQ是什么185
16.2 LINQ好在哪里186
16.2.1 查询表达式186
16.2.2 使用Linq to Objects查询集合187
16.2.3 使用Linq to XML查询XML 文件188
16.3 理解LINQ的本质191
16.4 归纳总结193
第17章 小改动大作为——C# 4.0中的微小改动194
17.1 可选参数和命名实参194
17.1.1 可选参数194
17.1.2 命名实参195
17.1.3 COM互操作的福音196
17.2 泛型的可变性198
17.2.1 协变性198
17.2.2 逆变性199
17.2.3 协变和逆变的注意事项200
17.3 归纳总结201
第18章 静中有动——动态类型202
18.1 动态类型简介202
18.2 C#为什么要引入动态类型202
18.2.1 可以减少强制类型转换的使用203
18.2.2 调用Python等动态语言203
18.3 动态类型约束203
18.3.1 不能用来调用扩展方法203
18.3.2 委托与动态类型间不能做隐式转换204
18.3.3 不能调用构造函数和静态方法204
18.3.4 类型声明和泛型类型参数204
18.4 实现自己的动态行为204
18.4.1 使用ExpandoObject来实现动态行为205
18.4.2 使用DynamicObject来实现动态行为205
18.4.3 使用IDynamicMetaObject-Provider接口来实现动态行为206
18.5 归纳总结207
第19章 你必须掌握的多线程编程208
19.1 多线程编程必备知识208
19.1.1 进程与线程的概念208
19.1.2 线程的调度209
19.1.3 线程也分前后台210
19.2 线程的容器——线程池213
19.2.1 线程池213
19.2.2 通过线程池来实现多线程214
19.2.3 协作式取消线程池线程215
19.3 线程同步216
19.3.1 多线程程序中存在的隐患216
19.3.2 使用监视器对象实现线程同步218
19.3.3 线程同步技术存在的问题221
19.4 归纳总结222
第20章 不得不说的异步编程223
20.1 什么是异步编程223
20.2 同步方式存在的问题223
20.3 异步编程模型(APM)226
20.4 异步编程模型——EAP231
20.5 TAP又是什么238
20.6 让异步编程So easy——C# 5.0 中的async和await242
20.7 归纳总结245
第21章 出师前闯关训练第一关——文件操作246
21.1 文件操作核心类246
21.1.1 File 和FileInfo类246
21.1.2 Directory和DirectoryInfo类248
21.2 流250
21.3 对文件进行异步操作252
21.4 归纳总结254
第22章 出师前闯关训练第二关——网络编程255
22.1 网络编程基础知识255
22.1.1 网络分层总览255
22.1.2 各层所使用的协议256
22.1.3 网络程序的工作机制257
22.2 基于TCP的网络程序的实现258
22.2.1 TCP的工作过程258
22.2.2 基于TCP的简单通信程序的实现260
22.3 基于UDP的网络程序的实现272
22.3.1 UDP的工作原理272
22.3.2 UDP的优势274
22.3.3 基于UDP的简单通信程序的实现274
22.4 归纳总结278
第23章 出师前闯关训练最后一关——使用GDI+实现属于你的截图工具279
23.1 前期准备279
23.1.1 什么是GDI+279
23.1.2 笔、画笔和颜色279
23.2 动手实现你的QQ截图工具281
23.2.1 实现思路281
23.2.2 瞧瞧最终结果290
23.3 归纳总结291
|
|