更新时间:2012年06月05日18时23分 来源:传智播客.Net

接上篇《【我来解惑】.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应该学什么怎么学(二)的更多相关文章

  1. .net基础学java系列(二)IDE 之 插件

    上一篇文章.net基础学java系列(二)IDE "扎实的基础"+"宽广的视野",基本可以帮我们摆脱码畜.码奴.码农的命运! IT领袖:IT大哥:IT精英:IT ...

  2. .Net应该学什么怎么学(三)

    更新时间:2012年06月05日18时26分 来源:传智播客.Net 接上篇[我来解惑].Net应该学什么怎么学(二)七.HTML.JavaScript.Dom        HTML是对网页长什么样 ...

  3. python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度

    一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...

  4. 从零单排学Redis【铂金二】

    前言 只有光头才能变强 好的,今天我们要上[铂金二]了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了): 从零单排学Redis[青铜] 从零单排学Redis[白银] 从零单排学Redi ...

  5. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  6. 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探

    SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...

  7. .net基础学java系列(二)IDE

    上一篇文章.net基础学java系列(一)视野 废话: "视野"这篇文章,管理员说它比较空洞!也许初学者看不懂表格中的大部分内容!多年的neter估计也有很多不知道的! 有.net ...

  8. 每天学点SpringCloud(二):服务注册与发现Eureka

    相信看过 每天学点SpringCloud(一):简单服务提供者消费者调用的同学都发现了,在最后消费者调用提供者的时候把提供者的地址硬编码在了代码中,这样的方式肯定是不行的,今天,我们就是要Eureka ...

  9. Linux就该这么学 20181009(第十二章 SAMBA)

    参考链接https://www.linuxprobe.com Samba 跨平台的文件共享 linux-linux linux-windows /etc/samba/smb.conf 里面 []这个名 ...

随机推荐

  1. python之smtplib模块 发送邮件

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #smtplib模块 发送邮件 import smtplib from email.mime.text imp ...

  2. html5 效果 按下鼠标数值自动增长

    <!doctype html> <html> <head> <style> * { margin:0; padding:0; } div { margi ...

  3. 坦克大战-C语言-详注版

    代码地址如下:http://www.demodashi.com/demo/14259.html 坦克大战-C语言-详注版 概述 本文详述了C语言版坦克大战游戏的原理以及实现方法,对游戏代码进行了详细的 ...

  4. 小程序九:导航&地图&画布

    navigator 导航 属性名 类型 默认值 说明 url String   应用内的跳转链接 redirect Boolean false 是否关闭当前页面 hover-class String ...

  5. JQuery包装集size,length,index,slice,find,filter,is,children,next,nextAll,parent,parents,closest,siblings,add,end,andSelf的用法

    在使用Jquery包装集的知识之前首先要注意三个概念(当前包装集.新包装集.包装集内部元素)的区别. <!DOCTYPE html> <html xmlns="http:/ ...

  6. 将Log4J的日志内容发送到agent的source

    项目中使用log4j打印的内容同时传输到flume 1.flume端 flume的agent配置内容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a1.sour ...

  7. vue学习01

    vue学习01   1. 创建一个Vue实例官网-学习-教程-安装-(开发/生产版本)-与jQuery的引用相似 <!DOCTYPE html> <html> <head ...

  8. LevelDB场景分析4--BackgroundCompaction

    1.DBImpl::Open      uint64_t new_log_number = impl->versions_->NewFileNumber();      WritableF ...

  9. Linux内核中锁机制之RCU、大内核锁

    在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linu ...

  10. Java 异常模型综述

    一. 异常的引入及基础 发现错误的理想时机是在编译阶段.也就是在你试图运行程序之前. 然而,编译期间编译器并不能找出全部的错误,余下的错误仅仅有在运行期才干发现和解决,这类错误就是 Throwable ...