.Net应该学什么怎么学(二)
二、C#面向对象基础
初学者学面向对象的时候没必要(也做不到)把面向对象学的非常透、非常深,因为如果想深刻的理解面向对象,必须要有大量的编程经验才能真正体会面向对象到底是怎么回事、有什么好处。以前听到过有人建议初学者学习设计模式,我认为纯属误人子弟,对于初学者来说没有大量的编程经验,根本看不懂设计模式在说什么。这个阶段只要弄明白怎么声明类、什么是访问级别(主要是public、private)、什么是属性、字段、方法、什么是继承、什么是override就可以。面向对象有三个特性:封装、继承、多态。对于初学者来说理解多态是非常困难的也是没太大必要的,这个阶段只要能掌握封装和继承就可以。
三、简单的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基础》。
四、常用.Net Framework类
.Net Framework中的类是.Net中最丰富、最有价值的内容,.Net Framework中的类是和表现层无关的,也就是无论是在控制台中、WinForm中还是ASP.Net中都可以调用这些类,比如把一个字符串转换为整数都是使用Convert.ToInt32()这个方法,因此千万不能因为你是在控制台程序中写这些类就认为自己在“编写DOS程序”。
.Net Framework是非常庞大的,拥有上万个类,没必要把这几万个类掌握,在这个阶段把常用的.Net Framework类掌握了,会对后续阶段的学习非常有帮助。这些类包括:String类常用方法、StringBuilder类、IO类(FileStream、File、Path)、XML操作类、集合类(ArrayList、List<T>、Dictionary<K,V>)等。
五、SQL语句
这个阶段主要学习SQL语法,能够掌握常见的SQL语法。数据库管理系统有MSSQLServer、Oracle、MySQL、DB2、Access等,这些不同的系统对于数据库管理员来说使用方法各异,但是对于开发人员来说差不多,因为都是用的统一的操作语言“SQL”,通过SQL这门通用的语言,你可以和不同的数据库进行沟通,所以只要掌握了.Net开发最常用的MSSQLServer,以后根据工作的需要使用其他的数据库管理系统会非常简单。
现在企业招聘.Net开发人员的时候对于数据库考查非常多,甚至很多公司的笔试题中有1/3都是关于SQL语句、存储过程的,因此对于准备学习后找工作的同学来说必须把这部分内容学好。
这部分内容主要学习:MSSQLServer的简单管理,Select、Insert、Update、Delete语句,学完了这些内容就可以继续学习后续的ADO.Net了。学有余力的同学可以学习Join、Union、子查询、存储过程等高级的内容。
这部分内容学习时大家可以参考我的《程序员的SQL金典》这本书(我将近期发布这本书的全部免费电子版)和《 【传智播客.Net视频】第4季SQL从入门到提高》。这套视频教程。
六、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的接口编程,会对你理解设计模式有很大的帮助。
.Net应该学什么怎么学(二)的更多相关文章
- .net基础学java系列(二)IDE 之 插件
上一篇文章.net基础学java系列(二)IDE "扎实的基础"+"宽广的视野",基本可以帮我们摆脱码畜.码奴.码农的命运! IT领袖:IT大哥:IT精英:IT ...
- .Net应该学什么怎么学(三)
更新时间:2012年06月05日18时26分 来源:传智播客.Net 接上篇[我来解惑].Net应该学什么怎么学(二)七.HTML.JavaScript.Dom HTML是对网页长什么样 ...
- python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度
一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...
- 从零单排学Redis【铂金二】
前言 只有光头才能变强 好的,今天我们要上[铂金二]了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了): 从零单排学Redis[青铜] 从零单排学Redis[白银] 从零单排学Redi ...
- 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位
对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢. 一.关于POR(Power-On ...
- 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...
- .net基础学java系列(二)IDE
上一篇文章.net基础学java系列(一)视野 废话: "视野"这篇文章,管理员说它比较空洞!也许初学者看不懂表格中的大部分内容!多年的neter估计也有很多不知道的! 有.net ...
- 每天学点SpringCloud(二):服务注册与发现Eureka
相信看过 每天学点SpringCloud(一):简单服务提供者消费者调用的同学都发现了,在最后消费者调用提供者的时候把提供者的地址硬编码在了代码中,这样的方式肯定是不行的,今天,我们就是要Eureka ...
- Linux就该这么学 20181009(第十二章 SAMBA)
参考链接https://www.linuxprobe.com Samba 跨平台的文件共享 linux-linux linux-windows /etc/samba/smb.conf 里面 []这个名 ...
随机推荐
- Drupal Form问题汇总
问:如何校验和提交表单?答:Drupal允许定义默认的表单校验处理函数和提交处理函数. function practice_demo_form($form, &$form_state) { . ...
- SpringBoot之自定义验证码
代码地址如下:http://www.demodashi.com/demo/14280.html 项目介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控 ...
- Chrome 编译错误汇总
由于各种你懂的原因,訪问google的服务总是出错,先是hosts不工作.代理也不好使,最后最终能够短暂訪问了.我的版本号还是採用svn维护的,直接svn update也不行.试试git吧,一晚上才下 ...
- 工具-Memcahce和Redis比较
一.Memcache 1. memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小redis有部份存在硬盘上,这样能保证数据的持久性. 2. Memcache ...
- C#三种定时器
三个定时器分别是 实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer 提供以指定的 ...
- 计算机组成原理实验之CPU组成与指令周期实验
(实验五 CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月 8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...
- 《JAVA与模式》之参考资料
1.书籍 <JHead First 设计模式(中文版)> <JAVA与模式> <大话设计模式> 2.连接地址 http://blog.csdn.net/jason0 ...
- ant批量运行Jmeter脚本遇到 Content is not allowed in prolog.问题及解决方案
在执行 最后生成报告的 task 时,一直报下面这个错: TransformerException, Content is not allowed in prolog. 解决方法:需要修改jmete ...
- Log4Net基本配置
开源日志管理工具,项目主页:http://logging.apache.org/log4net/ 基本用法: 1.程序目录新建目录“Config”,目录内新建文件“log4net.config”,右键 ...
- C# winform 请求http ( get , post 两种方式 )
一:.Net中有两个类 HttpWebRequest 和HttpWebResponse 类来实现Http的请求 实现步骤: 1.通过WebRequest类创建一个HttpWebRequest的对象,该 ...