net framework from 1.0 -> 4.0
DESCRIPTION
简单介绍了.net framework 从1.0到4.0的演变历程.本文已经开放下载TRANSCRIPT
[email protected] Framework 1.0 → 4.0
假如给你一次机会从零开始学习 .net,你还会使用同样的方法么 ?
我们换一个角度……
第一个问题 : 你是用什么做开发的 ?
• C# 1.0 / 2.0 / 3.0 / 4.0 • Vs2005 VS2008 VS2010• .net Framework 2.0 /3.0 / 4.0
????
1.0 1.1 2.0 3.0 3.5 4.0
2002 2003 2005 2006 2007 2010
vs2002 vs2005vs2003 vs2008 vs2010
这些年我们一直追技术 ......
• 这些年 .net 到底发生了哪些变化 ?• 这些变化有什么规律吗 ?• 除了语法糖我们还能关注些什么 ?
.NET Framework 的设计目标是什么 ?
Productivity
1. 减少语法噪音• 完成目标功能语法本身代码量所占比例• 这部分改进多数被我们当作语法糖
2. 惯用法实现• 多数人都会采用的惯用法 , 会逐渐迁移到框
架内实现• 例如 :– TryParse – int? default()– EventHandler<T>
• 惯用法的实现职责从开发人员转移到框架 ,往往也会降低代码量
3. 类库功能增强• 常用功能逐渐加入到类库中• List<T>.FindAll• Stringbuilder.Clear();• String.Join• Collection 类库每一个版本都在变化
• 这种变化比较零散 , 需要我们 BCL 有一个持续的关注
•
4. 编程范式• 2.0 泛型编程• 3.0 函数式编程• 4.0 并行编程 dynamic
5. 设计模式• 设计模式本质上是弥补面向对象语言的不
足• 如果语言本身支持 , 何必重新发明轮子 ?– Lazy<T>– Event– Iterator
6. 产品级通用解决方案• LINQ• EF• TPL• Rx
7. 项目开发支持• Code Behind• Partial Class• Namespace alia
我们再换一个角度……
OOP 设计原则
SRP-SoC
OCP
DIP
DI/IoC
KISS
DRP
This page intentionally left blank
•
.net Framework 2.0
泛型 Generics
<T> 算法抽象
迭代器 Iterators
foreach yei ld IenumberableIenumberator Col lecti on
局部类 partial
代码生成 一个类确实很大怎么办
TryParse()
Test-do exception
• 属性访问修饰符 access modifiers on getters and setters
• 匿名方法 anonymous methods.
Inline
//declare a method with no name and convert it into a delegate.
• 后台工作进程 background worker pattern
Event-based Asynchronous Pattern (EAP)
• 泛型约束 Generics Constraints
• 最令你吃惊的事实是什么?
人生只有 900 个月.net framework 2.0 才有静态类
• C#– default()– System.EventHandler<T>– System.Collections.Generic.List<T> FindAll()– General Catch Block– Nullable Modifier int?– contravariance & covariance
• Product– Ado.net– Asp.net
• What's New in the .NET Framework Version 2.0• http://msdn.microsoft.com/en-us/library/t357fb32.aspx
• Breaking Changes in .NET Framework 2.0• http://msdn.microsoft.com/zh-cn/netframework/aa570326.aspx
.net Framework 3.0
• 3.0
•
.net Framework 3.5
匿名类型 anonymous types
var
自动属性 automatically implemented properties
{get;set;}
集合初始化 Collection Initializers
new List<int>(){1,2,3,45};
对象初始化 Object Initializer
Student student=new Student(){ StudentName="zen",Number=20022396};
扩展方法 Extension methods
“abc”.ToHTML()
LINQ
data.Select(n=>n.ToUpper()).All(n => n.Length > 5);
无参匿名方法 Parameterless Anonymous Methods
delegate { return Console.ReadLine() != "“}
Lambda 表达式(a,b)=>a+b
Expression Trees
.net Framework 4.0
TPL & Parallel loops
PLINQConcurrent Collection
dynamic
Optional parameters
Tuple
Func & Action
结束了吗 ?
•
C# 5.0 is Coming Soon
• 10000 个小时的练习,成为技术专家
我曾认为用手槌要六百年才能掘通的隧道
安迪用不到二十年就办到了
持续关注,坚持练习
每天早晨叫醒我们的不是闹钟而是梦想
谢谢 !