在那个桃花盛开的季节,我们在雨天学习泛型集合
深入.NET平台和C#编程
之化骨绵掌
假 如 你 的 人 生 有 理 想,那 么 就 一 定 要 去 追,不 管 你 现 在 的 理 想 在 别 人 看 来是 多 么 的 可 笑 , 你 也 不 用 在 乎 , 人 生 蹉 跎 几 十 年 , 如 果 年 轻 的 时 候 计 较 得 失 前 怕 狼 就 后 怕 虎 而 不 去 追 逐, 等 到 了 40, 50 岁 的 时 候 , 你 唯 一 能 做 的 就 是 感 叹 岁 月 的 消 逝 和 无 情…
船舶停靠在港湾是很安全的,但这不是造船的目的
--北大青鸟五道口校区原玉明老师编写
By:北大青鸟五道口原玉明老师
1.学习方法: 3
第一章 深入.NET框架 5
1.NET简单解说 5
2.Microsoft .NET框架概述。 7
3. NET框架体系结构 9
4.封装体现 李明瑞 14
5..那些年我们学过的访问修饰符?? 14
6.变量,类和方法的命名法 15
7.new:代表含义: 15
8.字段和属性区别? 15
9.自动属性 15
10.vs2012下写的项目如何在vs2010中打开 16
11.作业环节 16
第二章 深入C#数据类型 16
CLR via C# 16
1. 封装 16
2. 关于数组的那些事儿 17
3. 值类型(在栈上存储真实的值)和引用类型(堆和栈上都要分配空间) 17
4. 结构体 22
5.构造函数 23
6.装箱和拆箱 24
7. 值传递和引用传递 25
8.经典练习 经理评分 26
第三章 使用集合组织相关数据(终极内存数据容器) 28
一、集合概念引入 30
二、 第一个集合ArrayList的使用 31
★1.引子: 31
★2.集合扩容原理截图 32
三、集合中元素操作(添加,遍历,删除、常见错误) 34
1.常见属性: 34
2.常用方法: 34
3. 常见错误:见PPT 34
4.现场编程 35
四、集合初始化器,对象初始化器 36
五、HashTable 36
★1.HashTable注意事项 37
★2.对HashTable遍历三种方案: 37
六、泛型集合List<T>(理解difficult,写起来easy) 40
七、泛型集合Dictionary<K,V> 40
八、 自定义泛型 40
九、.NET集合框架(集合扩展) 41
Queue(队列): 42
Stack(栈): 42
第四章 深入类的方法 44
1.构造函数 44
2.方法重载(考试必考:2到3分) 45
3. 对象间的交互 45
第六章 继承 51
一、课程回顾 51
二、预习问题 52
三、本章目标 52
四、课程内容 53
3.继承: 53
第七章 深入理解多态 60
第一种:虚方法实现多态 63
第二种:抽象方法实现多态 65
第八章 网络电视精灵 // 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。 System.Environment.CurrentDirectory 69
01.什么是设计模式 72
02.简单工厂图解 73
03.单例模式 75
04.为什么学习XML? 77
05.什么是XML? 77
06.xml书写注意点 78
07.解析xml文件 78
08.问题记录 78
09.TreeView控件 78
10.网络电视精灵 79
第九章 文件操作 89
01.文件操作相关 92
02.File和Directory 93
03.FileInfo和 DirectoryInfo 93
04.序列化与反序列化 94
第十章 影院售票系统 96
1. 从Movie开始 97
2. Seat 座位类 100
3放映场次 100
寒假作业 (寒假开心快乐!):
01.预习S2 第二本数前4章,提交电子版预习笔记,附带案例做完,并且书写第五章体检套餐管理项目
02.将KTV系统代码形成BLog文章,并且附有解释,注释!
03.在所有讲过的S1课程中,书写一篇有技术含量的blog,可以是对象数组,可以是KTV项目的功能点对知识点的运用把控。
04.整理S1四本书所有的课堂案例,上机练习,以及课后题目源代码(需要提交),并且形成电子文档。
05.新年最大收获心情文章!
过年的一点点心意,大家别嫌少啊!希望大家过一个不一样的春节
1.学习方法:
01.找一本好书
初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证
02.查看帮助文档和搜索引擎的使用
借助网络上的Blog文章
03.不要急功近利
不要抱着速成的想法,否则必然走弯路
学习编程不是一蹴而就的事情
付出的成本高,才能有一个高薪的收入
04.不要浮躁
不要什么都学,只学有用的
浮躁的程度和技术水平成反比的
走自己的路,让别人去浮躁去吧!
每天问问自己,我是不是开始浮躁了,不能人云亦云.
05.学习语言基础很重要
基础不扎实,开发出的程序就很危险
将所学的用到开发中去
06.什么时候去看别人的代码?
揣摩编写代码人的思路,远比自己写软件要难得多
初学者不要去看别人的代码
在纸上把调用关系画出来,抓主线.
07.如何提高?
有主动性。学习的欲望要强。上网找别人的问题,为自己来提高
08.培养发现问题、思考问题和解决问题的能力
出错信息,异常信息
养成发现问题、思考问题和解决问题的能力
这种能力受益一辈子,且不随时间变化
09编程的思想
多用心,多动手
程序运行的原理和机制
编程的目的,函数的调用,内存模型
10.先学脉络,再学枝叶
你肉眼可见的网站 ,你都可以仿制出来,达到以假乱真的页面效果
13个段落 作家
第一章 深入.NET框架
--有的时候,我们在开发中,除了需要返回消息本身,还需要发送消息的状态,这个
--时候需要引入out参数。
第一章 深入.NET框架
2016年3月23日13:39:34
1.类和对象的关系?
解析:对象是类的实例,类是对象的抽象。
1.NET简单解说
l 关于类库的解说
精华:所谓类库,就是微软或者sun公司,定义好了一堆类,方便用户对数据库数据的操作,或者对磁盘文件的操作
新建类库时,命名空间的名称就是类库的名称
体现形式:XXX.dll(dynamic link library)或者XXX.exe
包含了一堆类:每个类中包含了一堆方法
l 面向对象提升
OOP(Object Oriented Programming)面向对象编程 (5k) 8k 12k
AOP:(Aspache Oriented Programming):面向切面编程
OOD(Object Oriented Designer)面向对象设计(架构师) 3万/month
OOA(Object Oriented Analysis)面向对象分析 (分析师) 10万/month
DBA(Database Administrator,简称DBA) 无价的,你要多少,老板必须给多少!
l 泛型集合对对象数组的一个升级(真正的开发中,用的都是泛型集合)
l xml解析
如何将硬盘上的xml文件形成内存中的泛型集合数据
l IO操作
序列化与反序列化(应用很广泛)
l 大家对.NET的认识
解析:老一辈人也称为DOTNET
.NET战略:微软的一个梦想:任何一个人,在任何一个地方,使用任何一款终端设备,都可以访问微软提供的服务,eg 云
广州:google,
Office,Google()
佛的角度来说:万物取一个平衡。
Java .NET
联通 移动
A B
.NET是微软的一个庞大的计划(战略)
Office.NET
网警浏览器
IE
卡莉·菲奥丽娜 (她是个女的)
hp的前ceo
hp和康柏这两个合并,
windows azure
.NET 平台
C#,VB.NET,C++
需要自己写一个程序开启摄像头
Java效率低
C#
C#底层调用的是java的jar包
C语言
C开发的。
System.out.printnln();
Console.WriteLine();
MVP
关于重装的那些事儿
gril friend
boy friend
桌面
我的文档
网上邻居
打印机共享
组件的注册
验证码:注册和登陆用验证码作用?
解析:机器 模拟 10亿次请求,
听说这个名字没人用1
听说这个名字没人用2
金蝶 KIS
速达3000
用友:
管家婆
ERP(企业资源规划)
OA系统
进销存
领料单
组装单
Vs版本 .NET Framework版本
Vs2003 1.0/1.1
Vs2005 2.0
Vs2008 3.0/3.5
Vs2010 4.0
Vs2012 4.5
Vs2013 4.5
Vs2015 待测、
2.Microsoft .NET框架概述。
01,Microsoft .NET介绍
微软的.NET历史
2000年微软公司向全球宣布其革命性的软件和服务平台:Microsoft .NET
02,为什么需要.NET框架
通过如下两个问题说明为什么需要.NET框架
001,C#程序可以在不同平台(PDA、PC)的环境中运行吗?
002, 使用C#程序可以调用VB.NET开发的程序吗?
答案肯定是可以的,这也足以说明.NET框架的强大之处。
03,.NET框架概述
.NET框架
.NET战略的基础框架
.NET程序的运行环境
强大的类库
.NET 框架==.NET Framework
解析:在A机器上开发了一款软件,只要B机器上有框架就行了,不用再B机器上安装开发环境VS。
.net core 1.0
04,.NET框架的魅力
001,面向对象编程
提高软件可复用、可扩展、易维护性、灵活性
002,强大的动态web支持
003,web服务
例如:天气预报服务iGoogle和支付宝网上购物商城
003,数字身份验证的支持
004,支持构建.NET程序的炫彩外衣(特效制作)
3.NET框架体系结构
01.NET框架体系结构
ADO.NET概念?
解析:ADO.NET是微软提供的一组类库,可以帮助程序员和数据库交互。他里面有四大对象(DataReader,DataAdapter,Command,Connection).
直接提问
二年:世界上有两种人:能看懂二进制的人和不能看懂二进制的人
02,公共语言运行时
\
CLR的两个组成部分
CTS:称为通用类型系统
定义了在IL中的数据类型
CLS:称为公共语言规范
包括几种面向对象的编程语言的通用功能。
03,.NET框架类库
Scanner
Arrays
1.NET平台下的语言
01.C# VB J# F# C++
2.
vs2013 4.5
vs2012对应框架的版本是4.5
vs2010 4.0
vs2008/sp1 3.0/3.5
vs2005 2.0
vs2003 1.1
3..NET FrameWork两大组件是什么?
解析:.NET 框架类库(FCL:FrameWork Class Library)和公共语言运行时(CLR:common language Runtime)
4.CLR包含两部分:
解析:公共语言规范CLS(Common Language Specific) 通用类型系统CTS(Common Type System)
5.c#语言要编程成可以被CPU解析执行的代码需要两次编译:
第一次编译:将C#语言通过c#编译器编译成MSIL中间代码
第二次编译:将MSIL代码通过即时编译器(JIT)编译成CPU可以解析执行的代码,或者成为(平台专用代码)
6.java程序要想被CPU解析执行也是需要两次编译
一次编译:将后缀名为java的文件通过java编译器编译成后缀名为.class(字节码)文件
第二次编译:将.class文件通过java虚拟机(jvm)编译成CPU可以解析的代码
7.CLR里面至少三部分:
CTS
CLS
JIT
类库:可以看成是一个承载了N个类的容器。
类库:System.Data.SqlClient 和数据库交互
System.Data: DataSet
System.WinForms; Winform应用必须类库
System.Collections.Generic; 泛型集合
System.Net; 网络操作,下载等操作
System.IO; 文件的读写,文件夹的读写。遍历等操作
System.Drawing; 绘制图形,和验证码
类库和命名空间?
解析:一个类库一般对应一个命名空间,也可以对应多个。
可执行文件
dynamic link library
类库
4.封装体现 李明瑞
第一种:将私有字段封装成公有的属性看成是封装的体现
第二种:一个类可以封装属性和方法
public class Dog
{
private string name;
public string Name
{
get{return name;}
set{name=value;}
}
public void bark()
{
}
}
1.面向对象编程三大特性:封装、继承和多态
5..那些年我们学过的访问修饰符??
public:任何位置,包括跨程序集。
internal:在当前程序集(项目)中都可以访问
private:只能在当前类中访问(当前类的花括号中访问。)
protected:只能在当前类和其子类中使用 (后续讲解)
访问修饰符:真正的含义?
类 字段 方法
类的访问修饰符:
//public(这个类在任何地方都可以使用) internal
字段:private,public
方法:private ,public
6.变量,类和方法的命名法
骆驼命名法(camel):第一个单词的首字母小写,后续有含义的单词首字母大写。 变量
帕斯卡命名卡(pascal):每一个单词的首字母都大写。类名和方法名
7.new:代表含义:
Student stu=new Student();
01.创建对象
02.开辟空间
03.自动调用构造函数
8.字段和属性区别?
解析:01.属性不能保存数据,真正保存数据的是字段
02.属性是可有可无的,字段是必须的。
03.如果字段只想让类内部访问,那么设置成private,如果想找一个中间者,
在Main方法中访问到Student类中的私有字段,那么属性可以是一种选择。
希望:推荐大家以后书写类的时候,字段和属性成对出现。
.属性无非就是有get和set两个访问器组成
get:取值
set:赋值
9.自动属性
自动属性应用场景:当我们不需要做逻辑判定的时候可以使用自动属性
定义自动属性在后台会自动帮我们生成一个对应数据类型的私有字段
10.vs2012下写的项目如何在vs2010中打开
步骤一:找到sln文件,用记事本打开,将Format Version 12.00 改为11.00
步骤二:找到csprocj文件 ,用记事本打开,将<TargeFrameworkVersion>4.5</TargeFrameworkVersion>
改为4.0
步骤三:将App.Config文件中的如下节点中的内容换成4.0
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
11.作业环节
01.下午大家魔兽写完
02.写一个可以读取所有数据库路径的工具(三节课)
03.第二章预习(不用进班)
必须多于3页
04.下次提问第一章和第二章单词
001..NET 框架两大组件
CLR组件
002.常用命名空间
003.C#程序编译原理图
第二章 深入C#数据类型
1.讲解第一章 魔兽争霸项目
C#入门经典
C#图解教程
--->c#本质论
--->梅超风:
CLR via C#
2.试着讲解几道笔试题
1.封装
土豪:拆快递。
窗边的小豆豆
C#本质论:
. 封装又称信息隐藏,是指利用抽象数据类型(自定义类UserInfo)将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系。
体现一:把方法和属性封装到类中,看成是一种封装
体现二:将私有字段封装成 公有的属性
封装的优点
第一:code重用;
第二:不必关心具体的实现; (方法)
第三:面向对象三大特征之一;
第四,具有安全性!
小孩儿
老舍37《四世同堂》 妞子 活活的给饿死
黄磊
2.关于数组的那些事儿
如果我们定义一个数组,并且赋值了
int[] nums={1,2};
nums当中保存 的是堆中的地址:例如:0x001
nums[0]:访问的是堆中的内容
3.值类型(在栈上存储真实的值)和引用类型(堆和栈上都要分配空间)
值类型:
Short int long
Float
Double
Boolean
Char
Byte
S2222 我们就是很2,牛!!!!你能怎么样!!
C# 垃圾回收器回收器
Java 垃圾回收器回收器
二代
三代
四代
Student stu=new Student();
4.结构体
为什么用结构体?因为当一个业务实体中,属性个数比较少的时候,使用类可能引起内存浪费,这个时候出现一种新的数据结构,就是结构体
/*01.结构体不用new,就可以直接对其属性赋值
*02.结构体中可以有字段,属性和方法
*03.结构体是值类型,类是引用类型
*04.在结构体中不能给字段赋初值,但是类中可以.
*05.结构体中没有默认构造函数,但类中有默认构造函数
网络地址:
*/
所有数据类型的父亲都是Object
所有的值类型直接的父亲是ValueType,爷爷是Object
5.构造函数
默认如果定义了一个类,系统会自动的生成一个和该类名称相同,并且没有返回值类型,甚至连Void都没有的方法,该方法就称为构造函数!
Student stu=new Student();
注意问题:值类型的直接父类都是ValueType,而ValueType又继承自Object
特殊的值类型:枚举和结构体
特殊的引用类型:数组和接口
6.装箱和拆箱
由于装箱和拆箱对系统性能损耗很大,所以在真实的开发中我们尽量避免装箱和拆箱的操作。
C#编程指南(c#权威)
Object:是引用类型,并且是所有数据类型(值类型,引用类型)的父类
面试题:
int number=3; 值类型的直接父类:ValueType,ValueType的父亲是Object
Console.WriteLine(number.ToString());
结论:没有装箱
下去自己查!Why ??
老师:什么时候应该装箱,什么时候应该拆箱?
解析:由于装箱和拆箱过程都要损耗系统的性能,所以在开发中应该尽量避免装箱和拆箱。
7.值传递和引用传递
方法的参数是值类型和引用类型
注意:值传递和引用传递判定依据是有没有ref关键字
结论:
01.如果方法的参数类型本身就是引用类型,那么对参数值的修改会永久保存
例如:public void TP(SE se)
{
se.Count++;//真正的修改se对象的Count值
}
02.如果方法的参数类型本身是值类型,又没有ref修饰,那么对参数值的修改,不会永久保存()
03.如果方法的参数类型本身是值类型,但是有ref修饰,那么对象参数值的修改,也会永久保存。
值类型传递 :不带ref的参数传递 SE se
引用类型传递:带ref的参数传递
Windows Live Writer
8.经典练习 经理评分
思路分析:
*先准备一个SE类
* 准备一个对象数组,长度为3
* 写一个方法初始化集合的3项
* 如何将数组中的数据(肉眼看不到的数据)转换成界面上的ListView中的数据(肉眼能见到的数据)
作业:
1.帮我写一个SSMS工具
2016年8月25日作业
1.
2.Blog文章
剖内存
值类型引用类型
Heap(堆) 栈(Stack) 队列
12K
3.面试题:
int number=3;
Console.WriteLine(number.ToString());
结论:没有装箱
下去自己查!
四类八种类型
StringBuilder和StringBuffer
作业环节:
1.看本次课12个知识点
2.数组题
3.最后SE Voter手动敲一遍
4.计算机编号 ,经理评分
5.课后所有的选择和简答题
6.第三章的预习作业
第三章 使用集合组织相关数据
第三章 使用集合组织相关数据(终极内存数据容器)
S2223听写
第一题:List<T>类型泛型
第一题 Dictionary<K,V>泛型
第三章题 集合初始化器
一、集合概念引入
集合:某些指定的对象(SE)集中在一起就是集合
如下是一个Hello Kitty的集合
数组:可以存储相同数据类型的一堆数据的容器
二、第一个集合ArrayList的使用
无论是java还是C#,引用类型对象都会自动调用它的ToString()
ToString()方法体重写的刚好就是 命名空间.类名
public string ToString()
{
return this.GetType().ToString();
}
★1.引子:
用ArrayList进行赋值的时候,需要使用Add()
但是对集合中元素的修正可以使用下标,eg.list[0]=1给新值
但是在集合中元素个数为0的情况下,不能用Add()方法之外的其他手段给集合中添加元素
,原因因为_size是集合的一个属性, 真正存储元素个数为0的时候。_Size也是0.
int[] nums = { 1, 2, 3, 3, 4, 5 };
我想在2和3之间插入一个元素100
数组的局限性:由于给数组中添加元素,删除元素的时候,特别麻烦,所以我想找一个替代数组的工具,来帮我们实现数组所能实现的功能。集合应运而生
集合的优点:01.自动扩容 02.集合当中很多方法可以让我们更加便捷的来操作集合中数据。(必须掌握)
扩展:集合本质的讲解(面试可以聊,加分)
00.使用ArrayList首先需要引入命名空间,System.Collections
01集合动态扩容原理:如果集合中元素个数为0,并没有开辟空间
02.默认如果集合中出现了第一个元素,那么集合的大小4,如果放入第5个元素,那么会扩容成8
03.如果在小括号中首次定义的时候指定了集合的长度,那么以后扩容的方式
变成初次指定数字大小的2倍;如果没有指定长度,那么遵循01的规范
04.集合内部也是通过两个数组相互copy完成扩容的,但是微软已经对其做了优化,我们不用关心效率问题
★2.集合扩容原理截图
小结:
01.集合的概念
自动扩容:
Capcity和Count区别?
02.构造函数
概念:给类定义一个方法,方法名和类名相同,没有返回值,连void都不能有。
03.非泛型集合在使用前,一定要先导入命名空间。
04.命名空间
解析:作用:能使用该命名空间下所有的内容(类,方法)
保证在不同的命名空间下可以出现同名类 。
weilengdeyu.Download()
Weiredeyxue.UPLoad()
2015年6月27日17:20:58
--删除
键盘
三、集合中元素操作(添加,遍历,删除、常见错误)
1.常见属性:
Capacity:集合占用空间
Count:集合存储元素个数
2.常用方法:
添加:int Add(Object value) //