SlideShare ist ein Scribd-Unternehmen logo
1 von 55
C#语言的演化
概述 
演化细节 
参考资料 
纲目
1 概述
C# 1 核心 
Struct和Class 
Delegate和Event
C# 2 演进 
泛型 
yield简化迭代器
C# 3 Rock 
LINQ(声明式编程) 
Lambda表达式
C# 4 动态 
dynamic
C# 5 异步 
async和await
2 演化细节
C# 1 
值类型的装箱和拆箱 
枚举显式赋值
C# 1 
枚举自动赋值 
dammit 
Post = 1 Post = 2
C# 1 
枚举权限控制
C# 1 
枚举Flags 
Push, Post 
6
C# 1 
反射 
const和readonly const引发版本问题
C# 1 
params 
using语句 
(IDisposable)
C# 1
C# 1 
XML单行注释
C# 1 
virtual和 
override
C# 1 
new 关键字
C# 1 
三元运算符 
隐式转换和显式转换
C# 1 
转义序列
C# 1 
round-trip 格式化
C# 1 
BeginXXX和EndXXX模式 
(APM)
C# 1 
预处理器指令
C# 1 
迭代器 
实现IEnumerable接口 
实现状态机IEnumerator:Current、MoveNext、 
Reset 
手动维护内部状态(容易出错)
C# 1 
其他 
优先使用foreach 
string是不可变的 
换行Environment.NewLine 
终结器~ 
unsafe 语句块中使用指针 
用delegate和event 替换观察者模式
C# 2 
.NET Framework泛型类 
List<T>, Dictionary<TKey, TValue>, Queue<T>, 
Stack<T>, HashSet<T>, etc... 
可空Struct
C# 2 
自定义泛型类和泛型方法
C# 2 
用yield return和yield break 
简化迭代器实现
C# 2 
out和ref 
Encoding
C# 2 
checked和unchecked 
OverflowException 
分部类
C# 2 
属性访问控制 
as和is 
空合并操作符
C# 2 
简化delegate实例的创建 
C# 1 
C# 2
C# 2 
匿名方法 
忽略 
委托 
参数
C# 2 
InternalsVisibleToAttribute 
delegate 协变/逆变
C# 2 
其他 
StringBuilder 
泛型约束 
泛型委托 
使用DynamicMethod和ILGenerator替换反射 
TryXXX模式 
XML多行注释 
default运算符 
sealed关键字 
using 命名空间别名、类型别名 
extern 外部别名 
FindAll方法 
用delegate 替换工厂方法模式
C# 3 
Lambda表达式 
C# 2 
C# 3
C# 3 
匿名类型 
隐式类型[数组] 
对象和集合初始化器
C# 3 
扩展方法(理智使用)
C# 3 
LINQ to Objects 
(IEnumerable<T>)
C# 3 
LINQ to XML
C# 3 
属性自动实现 
C# 2 C# 3
C# 3 
分部方法
C# 3 
其他 
查询表达式 
标准查询操作符 
表达式树 
IQueryable和IQueryProvider 
LINQ to XXX 
Parallel LINQ 
Func<...> 
ConvertAll方法 
匿名类型的不足
C# 4 
可选参数 
(有效减少方法重载) 
lock的变化
C# 4 
.NET 4之前 
现在 
改进
C# 4 
与动态语言互操作
C# 4 
其他 
DynamicAttribute 
接口和委托的泛型可变性: 
Action<in T>、Func<in T, out TResult> 
命名参数 
TPL 
并行集合 
Tuple<...> (返回多个值) 
简化COM互操作 
DLR
C# 5 
使用async和await 
简化异步编程
C# 5 
async和await 
(本质:状态机)
C# 5 
C# 5之前的异步编程 
APM模式(CPS with AsyncCallback) 
EAP模式 
Background Worker模式
3 参考资料
1.《C# in Depth》(《深入理解C#》) 
2.《Essential C#》(《C#本质论》) 
3. Anders Hejlsberg的视频: 
The Future of C# 
C# 4.0 and beyond
Trends and Future Directions in Programming 
Languages 
The Future of C# and Visual Basic 
4. C# REPL: 
CShell 
Mono C# REPL 
VisualStudio C# REPL
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍dennis zhuang
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式shademoon
 
10 檔案說明與處理
10 檔案說明與處理10 檔案說明與處理
10 檔案說明與處理shademoon
 
Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Kai-Feng Chou
 
Ptyhon 教學 003 函數
Ptyhon 教學 003 函數Ptyhon 教學 003 函數
Ptyhon 教學 003 函數信宏 陳
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能shademoon
 
C語言 第一章 C語言簡介
C語言 第一章 C語言簡介C語言 第一章 C語言簡介
C語言 第一章 C語言簡介shademoon
 
Python speed up with numba
Python speed up with numbaPython speed up with numba
Python speed up with numbaJiang Wu
 
函数调用关系工具-2011-孙光福
函数调用关系工具-2011-孙光福函数调用关系工具-2011-孙光福
函数调用关系工具-2011-孙光福Wu Liang
 
Scala function-and-closures
Scala function-and-closuresScala function-and-closures
Scala function-and-closureswang hongjiang
 
了解Php内核
了解Php内核了解Php内核
了解Php内核Er Zhang
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學Sita Liu
 

Was ist angesagt? (16)

Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式
 
10 檔案說明與處理
10 檔案說明與處理10 檔案說明與處理
10 檔案說明與處理
 
Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)
 
Ptyhon 教學 003 函數
Ptyhon 教學 003 函數Ptyhon 教學 003 函數
Ptyhon 教學 003 函數
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能
 
C語言 第一章 C語言簡介
C語言 第一章 C語言簡介C語言 第一章 C語言簡介
C語言 第一章 C語言簡介
 
系統程式 - 附錄
系統程式 - 附錄系統程式 - 附錄
系統程式 - 附錄
 
Python speed up with numba
Python speed up with numbaPython speed up with numba
Python speed up with numba
 
函数调用关系工具-2011-孙光福
函数调用关系工具-2011-孙光福函数调用关系工具-2011-孙光福
函数调用关系工具-2011-孙光福
 
Scala function-and-closures
Scala function-and-closuresScala function-and-closures
Scala function-and-closures
 
functional-scala
functional-scalafunctional-scala
functional-scala
 
Ch 8
Ch 8Ch 8
Ch 8
 
了解Php内核
了解Php内核了解Php内核
了解Php内核
 
系統程式 -- 第 8 章
系統程式 -- 第 8 章系統程式 -- 第 8 章
系統程式 -- 第 8 章
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 

Andere mochten auch

MPI use c language
MPI use c languageMPI use c language
MPI use c languageZongYing Lyu
 
Representasi floating point
Representasi floating pointRepresentasi floating point
Representasi floating pointrikiR06
 
гдз. русский язык. 6кл. баранов м.т. и др 2013 128с
гдз. русский язык. 6кл. баранов м.т. и др 2013  128сгдз. русский язык. 6кл. баранов м.т. и др 2013  128с
гдз. русский язык. 6кл. баранов м.т. и др 2013 128сYury Laas
 
MS POWER POINT 2007 BAB 1
MS POWER POINT 2007 BAB 1MS POWER POINT 2007 BAB 1
MS POWER POINT 2007 BAB 1nicko9h
 
A2 Media Evaluation- Question 1
A2 Media Evaluation- Question 1A2 Media Evaluation- Question 1
A2 Media Evaluation- Question 1Scoley1996
 
Target Audience
Target AudienceTarget Audience
Target Audiencelucy-media
 
البودكاست ما هو وما فائدته لنا؟
البودكاست ما هو وما فائدته لنا؟البودكاست ما هو وما فائدته لنا؟
البودكاست ما هو وما فائدته لنا؟hmood-15
 
Plumbing - Top Information For 2012
Plumbing - Top Information For 2012Plumbing - Top Information For 2012
Plumbing - Top Information For 2012mushypaint9260
 
Marketing to Millennials - July 2015
Marketing to Millennials - July 2015Marketing to Millennials - July 2015
Marketing to Millennials - July 2015Jude Brooks
 
Field monitoring
Field monitoringField monitoring
Field monitoringSaher Alem
 
Fennoskandia Pekka Kivikas
Fennoskandia Pekka KivikasFennoskandia Pekka Kivikas
Fennoskandia Pekka KivikasRockArtKivikas
 

Andere mochten auch (20)

MPI use c language
MPI use c languageMPI use c language
MPI use c language
 
Work3-10
Work3-10Work3-10
Work3-10
 
rules
rulesrules
rules
 
Representasi floating point
Representasi floating pointRepresentasi floating point
Representasi floating point
 
skydrive_ppt_doc
skydrive_ppt_docskydrive_ppt_doc
skydrive_ppt_doc
 
гдз. русский язык. 6кл. баранов м.т. и др 2013 128с
гдз. русский язык. 6кл. баранов м.т. и др 2013  128сгдз. русский язык. 6кл. баранов м.т. и др 2013  128с
гдз. русский язык. 6кл. баранов м.т. и др 2013 128с
 
MS POWER POINT 2007 BAB 1
MS POWER POINT 2007 BAB 1MS POWER POINT 2007 BAB 1
MS POWER POINT 2007 BAB 1
 
Shannon media
Shannon mediaShannon media
Shannon media
 
Neminath electricals
Neminath electricalsNeminath electricals
Neminath electricals
 
A2 Media Evaluation- Question 1
A2 Media Evaluation- Question 1A2 Media Evaluation- Question 1
A2 Media Evaluation- Question 1
 
Target Audience
Target AudienceTarget Audience
Target Audience
 
ppti
pptippti
ppti
 
ASIF JAVAID_S
ASIF JAVAID_SASIF JAVAID_S
ASIF JAVAID_S
 
ALTXOR EZKUTUAHezkuntza
ALTXOR EZKUTUAHezkuntzaALTXOR EZKUTUAHezkuntza
ALTXOR EZKUTUAHezkuntza
 
البودكاست ما هو وما فائدته لنا؟
البودكاست ما هو وما فائدته لنا؟البودكاست ما هو وما فائدته لنا؟
البودكاست ما هو وما فائدته لنا؟
 
Devonte Spivey
Devonte SpiveyDevonte Spivey
Devonte Spivey
 
Plumbing - Top Information For 2012
Plumbing - Top Information For 2012Plumbing - Top Information For 2012
Plumbing - Top Information For 2012
 
Marketing to Millennials - July 2015
Marketing to Millennials - July 2015Marketing to Millennials - July 2015
Marketing to Millennials - July 2015
 
Field monitoring
Field monitoringField monitoring
Field monitoring
 
Fennoskandia Pekka Kivikas
Fennoskandia Pekka KivikasFennoskandia Pekka Kivikas
Fennoskandia Pekka Kivikas
 

Ähnlich wie C#语言的演化

Delegate (委派) Introduction
Delegate (委派) IntroductionDelegate (委派) Introduction
Delegate (委派) IntroductionZheng-Wei Lin
 
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509tidesq
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introductionotakustay
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure National Cheng Kung University
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析Wu Liang
 
C++模板与泛型编程
C++模板与泛型编程C++模板与泛型编程
C++模板与泛型编程deer hope
 
Hcsm lect-20120913
Hcsm lect-20120913Hcsm lect-20120913
Hcsm lect-20120913lusecheng
 
Php extension开发
Php extension开发Php extension开发
Php extension开发thinkinlamp
 
Mysql fast share
Mysql fast shareMysql fast share
Mysql fast sharerfyiamcool
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集shademoon
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)悦 温
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽Kito Cheng
 

Ähnlich wie C#语言的演化 (20)

Delegate (委派) Introduction
Delegate (委派) IntroductionDelegate (委派) Introduction
Delegate (委派) Introduction
 
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
C++工程实践
C++工程实践C++工程实践
C++工程实践
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
 
Ch07
Ch07Ch07
Ch07
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析
 
Dev307
Dev307Dev307
Dev307
 
C++模板与泛型编程
C++模板与泛型编程C++模板与泛型编程
C++模板与泛型编程
 
Hcsm lect-20120913
Hcsm lect-20120913Hcsm lect-20120913
Hcsm lect-20120913
 
Hi Haskell
Hi HaskellHi Haskell
Hi Haskell
 
Php extension开发
Php extension开发Php extension开发
Php extension开发
 
Mysql fast share
Mysql fast shareMysql fast share
Mysql fast share
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
C語言應用前置處理
C語言應用前置處理C語言應用前置處理
C語言應用前置處理
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
 

C#语言的演化