Soumettre la recherche
Mettre en ligne
Deep in c# syntactic sugar
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
498 vues
L
Lanvige Jiang
Suivre
深入C#语法糖看语言发展方向
Lire moins
Lire la suite
Technologie
Divertissement et humour
Signaler
Partager
Signaler
Partager
1 sur 18
Télécharger maintenant
Recommandé
Rocky Mtn Safety090917
Rocky Mtn Safety090917
Don Shafer
You’Ve Got Mail!
You’Ve Got Mail!
Eerika Kokkonen
Automatic Logo Replacement
Automatic Logo Replacement
Saurabh Palan
Non For Profit Social Networking
Non For Profit Social Networking
EmilyKelps
Assignment 2 Comtech
Assignment 2 Comtech
guesta33265
Servicios terminologicos pag web
Servicios terminologicos pag web
Sarabusramante
Black Berry Server
Black Berry Server
EmilyKelps
愛創小小聚201307 小強分享
愛創小小聚201307 小強分享
iTrEnD
Recommandé
Rocky Mtn Safety090917
Rocky Mtn Safety090917
Don Shafer
You’Ve Got Mail!
You’Ve Got Mail!
Eerika Kokkonen
Automatic Logo Replacement
Automatic Logo Replacement
Saurabh Palan
Non For Profit Social Networking
Non For Profit Social Networking
EmilyKelps
Assignment 2 Comtech
Assignment 2 Comtech
guesta33265
Servicios terminologicos pag web
Servicios terminologicos pag web
Sarabusramante
Black Berry Server
Black Berry Server
EmilyKelps
愛創小小聚201307 小強分享
愛創小小聚201307 小強分享
iTrEnD
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
drewz lin
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
tick
Dpl in action
Dpl in action
Pu Shiming
DDD引導
DDD引導
國昭 張
Duck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
Sway Wang
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
babel_qi
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
kewuc
網站上線了,然後呢?
網站上線了,然後呢?
Kirk Chen
Drupal7第一堂
Drupal7第一堂
Hen Chen
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
Dahui Feng
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
Yu Lung Shao
DDD系統分析
DDD系統分析
國昭 張
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
iflytek
大數據
大數據
brian401777
2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference
Guan-Rong Huang
N-layer design & development
N-layer design & development
Xuefeng Zhang
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
drewz lin
与Python一路走来
与Python一路走来
leejd
Contenu connexe
Similaire à Deep in c# syntactic sugar
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
drewz lin
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
tick
Dpl in action
Dpl in action
Pu Shiming
DDD引導
DDD引導
國昭 張
Duck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
Sway Wang
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
babel_qi
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
kewuc
網站上線了,然後呢?
網站上線了,然後呢?
Kirk Chen
Drupal7第一堂
Drupal7第一堂
Hen Chen
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
Dahui Feng
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
Yu Lung Shao
DDD系統分析
DDD系統分析
國昭 張
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
iflytek
大數據
大數據
brian401777
2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference
Guan-Rong Huang
N-layer design & development
N-layer design & development
Xuefeng Zhang
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
drewz lin
与Python一路走来
与Python一路走来
leejd
Similaire à Deep in c# syntactic sugar
(20)
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
Dpl in action
Dpl in action
DDD引導
DDD引導
Duck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
網站上線了,然後呢?
網站上線了,然後呢?
Drupal7第一堂
Drupal7第一堂
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
DDD系統分析
DDD系統分析
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
大數據
大數據
2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference
N-layer design & development
N-layer design & development
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
与Python一路走来
与Python一路走来
Deep in c# syntactic sugar
1.
Deep in C#
Syntactic Sugar Zhiming Jiang MSN GMD CSL & Integration
2.
TOPIC • C#的发展过程 • 面向对象如何被支持 •
Var关键词 • 认识泛型 • Yiled的使用 • Lambda & LINQ
3.
4.
计算机不懂对象 编程语言中是怎么实现面向对象的
5.
面向过程 • 冯诺依曼体系 • 顺序化执行 •
数据和结构紧紧耦合 • 难以进行扩展 • 仍能做出好的软件 面向对象 • 计算机面向人类思维的一次转变 • 面对更复杂的事物时提供一种解 决方案 • 抽象机制和现实接近 • 易于扩展
6.
语言层面实现的本质 • 对象字段编译完后和过程语言中的struct一样 • 编译器将所有的对象方法转为普通方法 •
Private Public 在编译后都不再存在 • 方法参数列表中加入指向自身的一个参数(this) – 如Python中self(不是类本身,而是实例本身) * 以上以C和C++为参考进行对比,C#则引入Metadata机制
7.
C# 执行流程 C# • dgasfgas IL•
CLR 机器码• JIT
8.
可爱的VAR 由编译器在编译时推断出类型
9.
VAR的作用 • 它有利于更好地为本地变量命名。 • 它有利于设计更好的API。 •
它促使对变量进行初始化。 • 它消除了代码的混乱。 • 它不需要using指示符。 • 过度使用var会使得源代码晦涩难懂。 • 在使用变量之前,通常需要将变量初始化为null,而var关键字对此却不支持 *本段摘自: http://www.infoq.com/news/2008/05/CSharp-var
10.
Source static void Main(string[]
args) { var strab = “Hello”; string strdc = “World”; } I L .entrypoint // Code size 14 (0xe) .maxstack 1 .locals init ([0] string strab, [1] string strdc) IL_0000: nop IL_0001: ldstr "Hello" IL_0006: stloc.0 IL_0007: ldstr "World" IL_000c: stloc.1 IL_000d: ret • 由编译器在编译时推断出类型 • ldstr: load String 将字符串入栈 • .Net Reflector Tool
11.
认识泛型 泛型是怎么被实现的 意义: 复用 装箱拆箱所带来的性能问题 约束
12.
泛型本质 • 依然是占位符 • JIT会为值类型创建各自的本地代码实现 •
引用类型实际都共享一个方法的代码(避免方法爆炸) * 1. 示例代码摘至: CLR内部有太多太多IL看不到的东西,包括您平时必须了解的那些 * 2. 思考: 为什么将泛型实现交给JIT,而非由CLR直接处理 private static void GenericMethod<T>(){ Console.WriteLine(typeof(T)); } static void Main(string[] args){ GenericMethod<string>(); GenericMethod<int>(); GenericMethod<object>(); GenericMethod<DateTime>(); GenericMethod<Program>(); GenericMethod<double>(); Console.ReadLine(); } 00a70071 mov ebp,esp 00a70073 mov ecx,3A30C4h (MD: ....GenericMethod[[System.String 00a70078 call dword ptr ds:[3A3098h] (....GenericMethod[[System.__Canon, 00a7007e call dword ptr ds:[3A3108h] (....GenericMethod[[System.Int32 00a70084 mov ecx,3A3134h (MD: ....GenericMethod[[System.Object 00a70089 call dword ptr ds:[3A3098h] (....GenericMethod[[System.__Canon 00a7008f call dword ptr ds:[3A3178h] (....GenericMethod[[System.DateTime 00a70095 mov ecx,3A31A4h (MD: ....GenericMethod[[TestConsole.Program 00a7009a call dword ptr ds:[3A3098h] (....GenericMethod[[System.__Canon 00a700a0 call dword ptr ds:[3A31E8h] (....GenericMethod[[System.Double
13.
认识YIELD • 简化迭代 • 延迟计算
14.
Yiled本质 • CLR后台生成一个标准的迭代器全代码 • 调用时执行,延迟技术,对查询条件进行优化 •
[Code Demo]
15.
LAMBDA & LINQ
16.
Lambda //1.0 delegate int Dele(string
s); static int Find(string s){ return s.IndexOf("abc"); } Dele t = new Dele(Find); //2.0 匿名方法 fruits.Find(delegate(string s) { return s.IndexOf("abc"; }); //3.0 Lambda fruits.Find(s => s. s.IndexOf("abc")); * 课后练习:自己动手分析Lambda背后的IL代码
17.
C#语言的方向 • 功能化 •
语义化 • 多核并行 • 动态
18.
IT IS OVER,THANKS
Notes de l'éditeur
在1.0时代我们要声明一个方法,挂到委托对象上。 整个Lambda表达式是一个值,委托类型 更接近人的思维,
Télécharger maintenant