本文是网页版《C# 12.0 本质论》第一章解读。欲完整跟踪本系列文章,请关注并订阅我的Essential C# 12.0解读专栏。
前言
第一章的内容非常简单,毕竟仅仅是Introducing C#。不过正如《0.前言》所述,《C# 12.0本质论》本身就不是一本零基础的书,也不像教材,材料的组织并非循序渐进。如果阅读这一章时感觉困难,就需要考虑换一本更浅显易懂的教材(比如本章最后推荐的《Pro C# 10 with .NET 6》)。
我一直秉承授人以鱼不如授人以渔的理念,重点不在于具体知识陈述,而在于学习资源的分享。所以,本文不对原书第一章内容做任何复述,而是重点介绍一组权威资料,让大家遇到问题时知道到哪里去找权威答案。
.NET架构
先借用一张图说明一下C#运行环境及.NET架构。这张图主要说了几个概念:
- C#源代码经过托管编译器(csc.exe)编译后,生成Managed Module;
- Managed Module包含了IL代码和元数据Metadata
- Managed Module执行的时候首先被加载器loader加载到内存,然后运行时编译器JIT再将IL代码编译成本机代码Native Code
- 最后,Execute Engine执行本机代码。
C#语法
国际规范
毫无疑问,微软是C#编程语言的开创者和领跑者,不过在微软推动下,C#早已被ECMA(欧洲计算机制造商协会:European Computer Manufacturers Association)、ISO(国际标准化组织:International Organization for Standardization)及IEC(国际电工委员会:International Electrotechnical Commission)纳入其规范。ECMA负责推动该规范的组织是ECMA C# standard committee (TC49-TG2),第一版规范是《ECMA-334:2003》,与之对应,ISO/IEC规范是《ISO/IEC 23270:2003》,该规范对应于微软的C#语言第一版(C#1.0)。
最新版的正式规范是《ECMA-334:2023》和《ECMA-334:2023》,对应于微软的C#7.0。
如今,ECMA正在起草C# 8规范,可以通过这里查看最新标准草案的更新情况。
标准有什么用?很多时候,我们学习一门语言并不需要通读C#标准,因为标准就如同一本康熙字典,谁都不愿意通过查字典方式来学习汉字。不过,身边有一本字典备用还是非常有用的,比如教科书中经常有如下所示的C#语法描述:
C#被编译时,编译器会将连续的空白字符合并成一个空