目录
第1章概述
1.1.NET
1.2C#
1.3VS开发环境
1.4编程初试
1.4.1控制台程序
1.4.2WinForm程序
1.5问与答
1.5.1学习.NET相关技术,将来能干什么
1.5.2何谓注释,C#中的注释有几种
1.5.3使用VS.NET时有什么技巧
1.5.4VS太大,是否有更小巧的C#学习开发环境
1.6思考与练习
1.7实战任务
第2章数据类型与运算符
2.1常量与变量
2.1.1常量
2.1.2变量
2.1.3变量的命名
2.1.4变量的命名法
2.2简单数据类型
2.2.1bool类型
2.2.2整型类型
2.2.3char类型
2.2.4小数类型
2.3枚举类型
2.4结构类型
2.5隐式类型变量
2.6运算符
2.6.1算术运算符
2.6.2赋值运算符
2.6.3关系运算符与逻辑运算符
2.6.4位运算符
2.6.5条件运算符
2.6.6自增与自减
2.6.7运算符的优先级
2.7转换
2.7.1隐式转换
2.7.2显式转换
2.7.3Type.Parse
2.7.4Convert类
2.7.5装箱与拆箱
2.7.6as & is
2.8问与答
2.8.1数值类型那么多,怎样记忆各类型的取值范围
2.8.2如何知道数值类型占用多大存储空间
2.8.3数值运算中,除数不能为零吗
2.8.40/0.0=?
2.8.5NaN和Infinity参与计算时,结果如何
2.8.6定义枚举类型时,**个枚举对应的数值必须为0吗
2.8.7定义枚举类型时,各个枚举项对应的数值必须连续吗
2.8.8如何更改枚举类型元素的数据类型
2.8.9各种类型的默认值分别是什么
2.8.10枚举类型的位操作是什么意思
2.9思考与练习
2.10实战任务
第3章程序控制
3.1选择语句
3.1.1if语句
3.1.2switch语句
3.2循环语句
3.2.1for语句
3.2.2while语句
3.2.3do…while语句
3.3跳转语句
3.3.1break语句
3.3.2continue语句
3.3.3goto语句
3.3.4return语句
3.3.5throw语句
3.4问与答
3.4.1if和switch分别应用于什么场合
3.4.2if和switch的各个分支的书写顺序有影响吗
3.4.3如何避免太深的嵌套
3.4.4for、while、do…while分别应用于什么场合
3.4.5如何知道程序执行耗费的时间
3.4.6如何产生随机数
3.4.7什么叫程序集
3.5思考与练习
3.6实战任务
第4章面向对象基础
4.1类与对象
4.2字段
4.3属性
4.3.1常规属性
4.3.2自动属性
4.4索引器
4.5方法
4.5.1方法的定义与使用
4.5.2变量作用域
4.5.3方法重载
4.5.4参数的个数不定问题——params
4.5.5ref与out
4.5.6this
4.6Main()函数
4.7构造函数
4.8static
4.9析构函数
4.10委托
4.10.1委托使用三步曲
4.10.2多播委托
4.11匿名方法
4.12Lambda表达式
4.13事件
4.13.1事件使用三步曲
4.13.2三类事件
4.14继承
4.14.1继承的实现
4.14.2抽象类及抽象方法
4.14.3类的密封
4.14.4继承过程中构造函数的执行顺序及调用
4.14.5protected修饰符
4.15多态
4.16接口
4.17匿名类型
4.18结构
4.18.1DateTime
4.18.2TimeSpan
4.19object类
4.19.1相等问题
4.19.2GetType()
4.19.3ToString()
4.20问与答
4.20.1什么是命名空间
4.20.2readonly与const究竟有何区别
4.20.3什么是分部类
4.20.4密封类的扩展——扩展方法
4.20.5is和as——兼谈如何让singer不要调用基类方法
4.20.6重写与重载
4.20.7抽象方法和虚方法
4.20.8接口、抽象类、类与结构
4.20.9接口中有重名的方法该如何办
4.20.10base与this
4.20.11什么是运算符重载
4.20.12如何给自定义的结构定义相等逻辑
4.21思考与练习
4.22实战任务
第5章数组
5.1声明及初始化
5.2访问与遍历
5.3Array
5.4聪明的数组——索引器
5.5问与答
5.5.1如何使用Array.Sort()来排序对象数组
5.5.2数组的大小真的没法调整吗
5.5.3如何查找数组中具有特定特征的元素
5.5.4索引器的参数类型一定要为int吗
5.5.5如何不计算即可获得*大值、*小值、和值、平均值
5.6思考与练习
5.7实战任务
第6章字符串
6.1字符串及其转义符
6.1.1字符串及其构造
6.1.2字符转义
6.2常用方法
6.2.1string类的方法
6.2.2字符串对象的方法
6.3StringBuilder
6.4编码
6.5问与答
6.5.1s=null,s=string.Empty与s
=""
6.5.2字符串与数组之间如何互相转化
6.5.3字符串与字节数组之间的转换有何意义
6.5.4各种编码之间如何转换
6.6思考与练习
6.7实战任务
第7章WinForm初步
7.1窗体
7.2控件常用操作及其键盘和鼠标事件
7.2.1控件常用操作
7.2.2键盘事件处理
7.2.3鼠标事件处理
7.3基本控件
7.3.1Label控件
7.3.2Button控件
7.3.3RadioButton控件
7.3.4CheckBox控件
7.3.5TextBox控件
7.3.6ListBox控件
7.3.7ComboBox控件
7.3.8PictureBox控件
7.3.9NumericUpDown控件
7.3.10ProgressBar控件
7.3.11HScrollBar控件和VScrollBar控件
7.3.12TrackBar控件
7.3.13ToolTip控件
7.3.14GroupBox控件
7.3.15Panel控件
7.3.16MonthCalendar控件
7.4常用组件
7.4.1Timer组件
7.4.2ImageList组件
7.5菜单
7.5.1MenuStrip
7.5.2ContextMenuStrip
7.5.3ToolStrip
7.5.4StatusStrip
7.6对话框
7.6.1OpenFileDialog
7.6.2SaveFileDialog
7.6.3FontDialog
7.6.4ColorDialog
7.6.5FolderBrowserDialog
7.7高级控件
7.7.1RichTextBox控件
7.7.2CheckedListBox控件
7.7.3TabControl控件
7.7.4ListView控件
7.7.5TreeView控件
7.7.6WebBrowser控件
7.8COM组件
7.8.1Shockwave Flash Object组件
7.8.2Windows Media Player组件
7.9MDI
7.10问与答
7.10.1键盘事件KeyDown、KeyUp和KeyPress有何关系
7.10.2Click和MouseClick有何关系
7.10.3多种鼠标事件有何关系
7.10.4如何获取应用程序的运行环境信息
7.10.5如何获取应用程序的运行目录
7.10.6如何实现拖放
7.10.7关于剪贴板
7.10.8如何动态构建控件树
7.10.9如何实现窗体间的数据交互
7.11思考与练习
7.12实战任务
第8章文件
8.1文件系统
8.1.1驱动器访问
8.1.2目录访问
8.1.3文件访问
8.1.4路径
8.2文件处理流
8.2.1FileStream
8.2.2StreamReader与StreamWriter
8.2.3BinaryReader与BinaryWriter
8.3问与答
8.3.1如何创建临时文件
8.3.2如何比较两个文件是否一样
8.4思考与练习
8.5实战任务
第9章集合
9.1普通集合
9.1.1ArrayList
9.1.2Queue
9.1.3Stack
9.1.4Hashtable
9.1.5SortedList
9.1.6BitArray
9.2泛型
9.3泛型集合
9.3.1ListT
9.3.2QueueT和StackT
9.3.3DictionaryK,V和KeyValuePairK,
V
9.3.4SortedListK,V
9.3.5HashSetT
9.4问与答
9.4.1集合中的元素应该如何正确删除
9.4.2如何使用内置排序器来实现ArrayList排序——IComparer
9.4.3如何完全自定义排序规则来排序
9.4.4IEnumerable和IEnumerator有什么作用和特性
9.4.5什么是可空类型
9.4.6什么是Tuple
9.4.7泛型变量的默认值是多少
9.4.8针对如下泛型方法,下面的调用代码可行吗
9.4.9泛型的比较问题
9.4.10HashSetT的扩展方法
9.4.11集合的运算
9.5思考与练习
9.6实战任务
第10章GDI
10.1概述
10.2辅助绘图对象
10.2.1Point结构
10.2.2Size结构
10.2.3Rectangle结构
10.2.4Color结构
10.2.5Font类
10.2.6Graphics类
10.3基本绘图工具
10.3.1Pen
10.3.2Brush
10.4图像处理
10.4.1绘制直线
10.4.2绘制矩形
10.4.3绘制多边形
10.4.4绘制曲线
10.4.5绘制椭圆
10.4.6绘制图像
10.5常见应用
10.5.1格式转换
10.5.2水印
10.5.3灰化
10.5.4底片
10.5.5浮雕
10.5.6文本打印
10.6问与答
10.6.1如何实现网页颜色与Color的转换
10.6.2Math类
10.7思考与练习
10.8实战任务
第11章多线程
11.1进程
11.2多线程基础操作
11.2.1创建线程
11.2.2启动线程
11.2.3终止线程
11.2.4暂停线程
11.2.5合并线程
11.3线程同步
11.3.1lock
11.3.2Monitor
11.3.3Mutex
11.3.4ContextBoundObject
11.3.5ManualResetEvent
11.3.6AutoResetEvent
11.4线程池
11.5跨线程的控件访问
11.6问与答
11.6.1如何使用匿名方法来创建线程
11.6.2如何使用Lambda表达式来创建线程
11.6.3如何向线程方法传递多个参数
11.6.4如何通过手动同步事件给多个线程加锁
11.7思考与练习
11.8实战任务
第12章序列化
12.1二进制序列化
12.2SOAP序列化
12.3XML序列化
12.4问与答
12.4.1采用二进制序列化时,从序列化后的文件能看到什么
12.4.2如何序列化到内存流
12.4.3反序列化时想使用被禁止序列化的字段该如何办
12.4.4属性在序列化时遵从什么样的规律呢
12.5思考与练习
12.6实战任务
第13章压缩与解压
13.1DeflateStream
13.2GZipStream
13.3问与答
13.3.1using的作用
13.3.2如何实现多文件的压缩解压
13.4思考与练习
13.5实战任务
第14章SQL
14.1数据库基本概念
14.2SQL学习环境及基本操作
14.2.1Microsoft SQL Server Management
Studio
14.2.2数据库与表的基本SQL操作
14.3Insert
14.4Select
14.4.1查询数据
14.4.2查询指定字段
14.4.3排序
14.4.4过滤
14.4.5查询前n条记录
14.4.6模糊查询
14.4.7统计
14.4.8分组
14.4.9空值查询
14.5Update
14.6Delete
14.7问与答
14.7.1如果表名或者字段名中有空格该如何办
14.7.2如何只返回不重复的记录
14.7.3如何指定结果的列名
14.7.4如何对查询到的结果进行一定的组合或者运算后呈现
14.7.5如何使用between关键字
14.7.6如何使用in关键字
14.7.7如何使用[]、[^]通配符
14.7.8compute子句如何使用
14.7.9什么是联合查询
14.7.10什么是嵌套查询
14.8思考与练习
14.9实战任务
第15章ADO.NET
15.1Connection
15.2Command
15.3DataReader
15.4DataAdapter
15.5DataSet
15.6参数化查询
15.7数据绑定
15.7.1相关控件与组件
15.7.2简单控件绑定
15.7.3复杂控件绑定
15.7.4数据绑定示例
15.8问与答
15.8.1记不住连接字符串的写法如何办
15.8.2Access数据库的连接字符串是怎样的
15.8.3连接Excel工作簿的连接字符串如何写
15.8.4如何使用App.config文件
15.9思考与练习
15.10实战任务
附录A异常处理与调试
A.1异常处理
A.1.1异常处理的几种形式
A.1.2异常的引发
A.1.3自定义异常
A.2调试
参考文献