写在前面
// HelloWorld.cs
public class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("学习一门程序设计语言最有效的途径是不断实践");
}
}
.NET Framework + C#的优势在于:
- 快速开发
- Windows窗体应用程序
- 避免复杂的内存管理
- 实现免安装绿色版
- 便捷调用Windows API
- 强大的IDE
- 丰富的扩展资源
- 轻量化数据库
- Word/Excel操作
- XML、Json等文件处理
- 数学扩展库
- ……
有用的链接
索引
- 学习C#
- .NET平台
- C#语言
- 软件设计
- 编程习惯
- 设计模式
- 程序员的数学
- 数据结构
- 算法
<h1 id='1'>学习C#</h1>
<h3 id='1.1'>.NET平台</h3>
.NET Framework提供了
- 公共语言运行时(CLR)
- .NET Framework类库
.Net Framework支持Visual Basic、C#、Visual J#、C++和JScript语言。
参见.NET Framework 中的语言和编译器
版本兼容性
.NET Framework版本 | CLR 版本 | 包含于Visual Studio版本 | 默认兼容Windows版本 | 可安装于Windows版本 |
---|---|---|---|---|
4.6 | 4 | 2015 | 10 | 8, 7 |
4.5 | 4 | 2013 | 10, 8 | 7 |
4 | 4 | 2010 | 10, 8, 7 | |
3.5 | 2.0 | 2008 | 10, 8, 7 | XP SP1 |
2.0 | 2.0 | 2005 | 10, 8, 7, XP |
<h3 id='1.2'>C#语言</h3>
语言基础学习思路:
- 基本语法
- 语句
- 表达式
- 运算符
- 基本数据类型
- 数值类型
- 字符和字符串
- 数组和枚举
- 类和接口(面向对象程序设计)
- 修饰符
- 类型
- 属性
- 方法
进阶技术:
- 异常处理
- 多线程编程
- 委托
- 事件
- Lambda表达式
- 线程处理
- 属性
- 集合类
- 迭代器
- ……
其他:
- LINQ、SQL
- 正则表达式
参见C# 编程指南
<h1 id='2'>软件设计</h1>
<h3 id='2.1'>编程习惯</h3>
良好的编程习惯有助于增强代码的可读性、可维护性。
80% of the lifetime cost of a piece of software goes to maintenance. Hardly any software is maintained for its whole life by the original author. Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly. If you ship your source code as a product, you need to make sure it is as well packaged and clean as any other product you create.
应注意的编程习惯包括:
- 文件命名
- 扩展名
- 文件名
- 源码结构
- 文件说明(注释)
- 引用
- 类和接口声明
- 代码缩进
- 代码行长度
- 换行
- 缩进
- 注释
- 块注释
- 整行注释
- 尾注释
- 行末注释
- 文档注释
- 声明
- 每行个数
- 初始化
- 位置
- 类和接口声明
- 语句
- 简单语句
- 复合语句
- Return语句
- if - else语句
- for语句
- while语句
- switch语句
- try - catch语句
- 空白
- 空行
- 空格
- 命名
- 类和接口名
- 方法名
- 常量名
- 变量名
- 编程惯例
- 静态变量和实例变量的可访问性
- 静态变量和方法的调用
- 常量的使用
- 变量赋值
- 括号的使用
- 条件运算符的使用
- 特殊注释
<h3 id='2.2'>设计模式</h3>
设计模式是开发人员在开发过程中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
不管做何种软件、用何种编程语言,在软件开发上,一直不变的真理是:CHANGE。不管当初软件设计得多好,一段时间之后,总是需要成长与改变,否则软件就会“死亡”。
设计模式不会直接进入代码中,而是进入开发人员的“大脑”中。
常用设计模式:
- 观察者模式(Observer)
- 装饰器模式(Decorator)
- 工厂模式(Factory)
- 单例模式(Singleton)
- 命令模式(Command)
- 适配器模式(Adapter)
- 外观模式(Facade)
- 模板模式(Template)
- 迭代器模式(Iterator)
- 组合模式(Composite)
- 状态模式(State)
- 代理模式(Proxy)
更多设计模式:
- 桥接模式(Bridge)
- 构造器模式(Builder)
- 责任链模式(Chain of Responsibility)
- 享元模式(Flyweight)
- 解释器模式(Interpreter)
- 中介者模式(Mediator)
- 备忘录模式(Memento)
- 原型模式(Prototype)
- 访问者模式(Visitor)
- ……
<h1 id='3'>程序员的数学</h1>
<h3 id='3.1'>数据结构</h3>
常用数据结构:
- 数组
- 栈
- 队列
- 树
- 图
其他数据结构:
- 堆
- 散列表
- ……
<h3 id='3.2'>算法</h3>
常用算法:
- 递归/递推
- 排序算法
- 快速排序
- 树算法
- 搜索(DFS、BFS)
- 最近公共祖先(LCA)
- 图算法
- 最短路径
- 拓扑排序
其他算法:
- 字符串匹配
- 最小生成树
- 动态规划
- 网络流
- 计算几何
- 矩阵
- 数论
- 随机化
- ……