接上篇《【我来解惑】.Net应该学什么怎么学(一)》。html
2、C#面向对象基础jquery
初学者学面向对象的时候不必(也作不到)把面向对象学的很是透、很是深,由于若是想深入的理解面向对象,必需要有大量的编程经验才能真正体会面向对象究竟是怎么回事、有什么好处。之前听到过有人建议初学者学习设计模式,我认为纯属误人子弟,对于初学者来讲没有大量的编程经验,根本看不懂设计模式在说什么。这个阶段只要弄明白怎么声明类、什么是访问级别(主要是public、private)、什么是属性、字段、方法、什么是继承、什么是override就能够。面向对象有三个特性:封装、继承、多态。对于初学者来讲理解多态是很是困难的也是没太大必要的,这个阶段只要能掌握封装和继承就能够。程序员
3、简单的WinForm编程数据库
WinForm是.Net中用来构建Windows窗体应用程序的技术,对于目前国内市场来说通常也就是用来桌面版管理系统等的技术。有人会问“咱们不是学B/S的ASP.Net开发吗?为何还要学C/S的WinForm?”,必定要注意我在这段的标题写的是“简单的”WinForm。和ASP.Net比较起来,学WinForm须要学习的前置知识很是少,能够很是快的入手开发,而学习ASP.Net则须要先学习HTML、JavaScript、Dom等知识。这个阶段的学习重点不是WinForm自己,而是经过WinForm在案例中理解类、对象、属性、方法、事件、索引器等概念,咱们是“借壳学习”,所以不用对WinForm的深刻技术(好比控件美化、布局、PInvoke、托盘编程、高级控件、ActiveX等)浪费时间去研究。初学者很难把握WinForm学习的度,仍是推荐你们参考看我录制的视频教程《【传智播客.Net视频】第3季WinForm基础》。编程
4、经常使用.Net Framework类设计模式
.Net Framework中的类是.Net中最丰富、最有价值的内容,.Net Framework中的类是和表现层无关的,也就是不管是在控制台中、WinForm中仍是ASP.Net中均可以调用这些类,好比把一个字符串转换为整数都是使用Convert.ToInt32()这个方法,所以千万不能由于你是在控制台程序中写这些类就认为本身在“编写DOS程序”。ide
.Net Framework是很是庞大的,拥有上万个类,不必把这几万个类掌握,在这个阶段把经常使用的.Net Framework类掌握了,会对后续阶段的学习很是有帮助。这些类包括:String类经常使用方法、StringBuilder类、IO类(FileStream、File、Path)、XML操做类、集合类(ArrayList、List<T>、Dictionary<K,V>)等。布局
5、SQL语句学习
这个阶段主要学习SQL语法,可以掌握常见的SQL语法。数据库管理系统有MSSQLServer、Oracle、MySQL、DB二、Access等,这些不一样的系统对于数据库管理员来讲使用方法各异,可是对于开发人员来讲差很少,由于都是用的统一的操做语言“SQL”,经过SQL这门通用的语言,你能够和不一样的数据库进行沟通,因此只要掌握了.Net开发最经常使用的MSSQLServer,之后根据工做的须要使用其余的数据库管理系统会很是简单。ui
如今企业招聘.Net开发人员的时候对于数据库考查很是多,甚至不少公司的笔试题中有1/3都是关于SQL语句、存储过程的,所以对于准备学习后找工做的同窗来讲必须把这部份内容学好。
这部份内容主要学习:MSSQLServer的简单管理,Select、Insert、Update、Delete语句,学完了这些内容就能够继续学习后续的ADO.Net了。学有余力的同窗能够学习Join、Union、子查询、存储过程等高级的内容。
这部份内容学习时你们能够参考个人《程序员的SQL金典》这本书(我将近期发布这本书的所有免费电子版)和《 【传智播客.Net视频】第4季SQL从入门到提升》。这套视频教程。
6、ADO.Net
ADO.Net是.Net中用来访问数据库的技术,经过ADO.Net咱们就能经过程序告诉数据库“请把年龄大于20岁的人员返回给我”。在学习ADO.Net以前必定要把经常使用的SQL语句掌握了,千万不能学了一句Select * from Persons就来学ADO.Net,不然可能会出现下面这个真实的故事中的笑话了:
我之前碰到过一我的写一个“查询学号为S001的学生的姓名”的功能,他这么写程序(示例性代码,不严谨):
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = “Select * from Persons”;
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
String no = (string)reader[ “No”];
if(no==” S001”)
{
string name = (string)reader[ “Name”];
MessageBox.Show(name);
}
}
看到这种写法相信全部人都要崩溃了,由于好像历来没学过where语句同样。所以必须在把经常使用的SQL语句掌握之后再来学ADO.Net。
这阶段的学习主要学习使用SqlConnection、SqlCommand(ExecuteNonQuery、ExecuteReader、ExecuteScalar)等类的使用、参数化查询等,掌握DataSet方式使用离线数据集,可以本身从头写一个SqlHelper类出来便可。
(注:这段我描述的是ADO.Net基于接口的编程,属于深刻一点的知识,对于初学者来讲若是看不懂也不要紧,不用纠结于此)SqlConnection、SqlCommand等类是ADO.Net中用来链接MSSQLServer的类,链接Oracle等数据库则使用OracleConnection、OracleCommand等类,虽然看似不一样的类,可是因为ADO.Net经过IDbConnection、IDbCommand等接口统一了类的方法,因此OracleConnection、OracleCommand等类的用法和SqlConnection、SqlCommand基本同样,并且若是经过DbProviderFactories进行基于接口的ADO.Net编程,那么编程的时候就是使用IDbConnection、IDbCommand接口,彻底不用管SqlConnection、OracleConnection等这些不一样的类。学有余力的同窗能够深刻研究一下ADO.Net的接口编程,会对你理解设计模式有很大的帮助。
注:以上谨表明我的观点,我誓死捍卫你反对我观点的权利,但请评论时保持文明用语。