不管学习哪一种编程语言或技术框架,为了避免“迷路”,少走弯路,都应当有一条系统的、全面的学习路线,笔者认为应以软件常用功能为主线,由简入繁,逐一实践每一项功能。
入门最难,入门不是简单的在电脑屏幕上输出“Hello World!”,而应当是了解编程语言的开发环境和工具,学习和掌握基本控件,多应用实践。入门阶段计算机编程理论大可放到一边,先学会如何使用编程工具开发小程序,然后再探讨如何开发更复杂的程序,最后再系统性的补全基础理论知识。笔者主张“死记硬背”式自学方法,先看到效果,再回过头来探讨为什么这么做。初学者如果尝到甜头,那么他就会对软件编程的兴趣会越学越浓烈,从而进入一个良性循环学习过程。如果学C语言几个周,也只能在自己的电脑屏幕上输出一些字符、写个循环、做个数学运算,那么这个初学者很可能因挫败的成就感而丧失对软件编程的兴趣。
我大学期间学习C语言的时候,虽然考试成绩不错,但对C语言理论还是一头雾水、充满疑惑,学好C语言具体能做什么也不清楚。因C语言的经典和传奇而喜欢它,但屡次因未感受到C写程序的成就感而放弃。后来,笔者开始参加一些诸如ACM的算法类考试。笔者自认为在学习语言的过程中一直未入门。一次逛书店,偶然翻到一本VB.NET开发实战,阅读VB.NET代码如同阅读文字一样轻松愉悦,按照书本提供的WinForm案例,短短两个月的时间就学会了一些项目的开发。后来学习ASP、PHP、Java等编程语也非常顺利。至此,方感恍然大悟,学编程这几年,一直懵懵懂懂,归根结底是未找到入门的切入点。
不论C#、Java、PHP,每种编程语言,语法都很相似,功能也相似,那么按照这个道理学习Java和C#应当难度一致,但大多数程序员都认为学习Java要比C#难,学习成本也高。笔者认为主要原因是Java的开发环境和资源获取难度要高于C#,C#在集成开发工具Visual Studio中通过向导分分钟就可看到C#写的程序,Visual Studio由微软提供,其完善程度远高于Java的开发环境。一个有趣的现象是Java程序员经常满世界寻找合适版本的jar包,这也是Java开源项目多、资源多的一个关键因素。C#程序员这样的经历就少多了,因为微软提供的已经很全面了。
有的程序员认为微软的东东太容易上手,所以学.NET不够高大上、不能证明自己比别人聪明,更喜欢使用敲命令行的工具。笔者认为学习计算机编程,可先找个“软柿子”,再啃“硬骨头”,所以推荐初学者从C#和Win Form入手。
以下是笔者整理的学习路线,功能排列没有绝对先后顺序,只是一个参考方向,欢迎批评指正,欢迎补充!
C#学习路线
1.安装和熟悉开发工具或开发环境
2.创建一个项目,输出Hello World,并在另一台电脑上运行编译好的演示程序
3.熟悉WinForm基本控件
4.数据类型
5.类及属性定义
6.变量
7.赋值
8.运算符
9.字符串拼接,尽量避免频繁使用+拼接,可使用StringBuilder
10.字符串格式化,使用传参方式替代字符串拼接
11.日期时间格式化
12.数值格式化
13.保留小数
14.条件
15.循环
16.生成随机数
17.数组
18.列表
19.队列
20.引用命名空间
21.在控制台输出
22.字体样式
23.快捷键
24.对话框
25.文件及文件夹操作
26.文本文件读取、修改、删除等操作
27.字符集
28.XML文件操作
29.验证码
30.缩略图
31.操作Excel
32.操作WPS
33.错误处理
34.错误日志
35.二进制流
36.字符编码
37.加解密
38.定时器
39.多进程
40.发邮件
41.调用cmd命令提示符
42.连接数据库(http://www.huiyaosoft.com/html/csharpconndb.htm)
43.数据库增删改查操作
44.数据集DataTable
45.字典
46.熟悉WinForm控件
47.文本标签Label
48.按钮
49.文本框
50.下拉框
51.日期时间选择框
52.单选框
53.复选框
54.列表框
55.选项卡
56.分割条
57.树
58.数据表格DataTableGridView/DataGrid
59.控件及事件(单机、双击、获得焦点、失去焦点、选中)
60.表单校验
61.正则表达式
62.消息对话框
63.确认框
64.输入框
65.调用Web Service
66.使用代理
67.操作COM口
68.打印
69.报表
70.Socket通信
71.托盘小图标
72.打开一个网址