C# 1.0
- c# 1.0是2002年出现的,那一年我才11岁,貌似还在上小学五年级。
- 天气晴朗,一个叫做Anders的大佬发明了c#,这个大佬设计编程语言不是头一次,他之前在Borland公司还设计了Delphi语言。
- 经验丰富的他博采众长, 于是c#就闪着金光横空出世了。
前车之鉴
有了c++和Java的一些前车之鉴,c#放聪明了许多, 例如:
- 强制限定if的()里面必须是boolean表达式
- struct 和 class 的用法也讲究了起来,struct创建值类型,class创建引用类型
- 允许使用virtual方法和非virtual方法
2021年5月28日,书上写,c#是一种纯粹的面向对象编程语言。默读着这句话,我脑中闪过一束的怀疑的光线,嗯...隐约记得哪里提到过c#的函数式编程。罢了罢了,姑且这样吧...
c# 三大特性,面试必备,背诵十遍
- 继承
- 封装
- 多态
哎?委托和事件,居然是基于组件的编程改进。此话怎讲
每种编程语言都有自己的运行库:
- Visual Basic: VB Run
- Java: Java Virtual Machine, JVC
- c#: CLR
CLR是所有.NET 编程语言都使用的运行库,言下之意就是,CLR不仅仅是c#的运行库。
这段提到了 JScipt, Visual Basic, 还有Managed c++,难道说这三个都是.NET编程语言?
c#代码经过c#编译器编译之后,生成exe或者dll。可以用ildasm.exe直接打开来看。里面的内容是IL代码。书上比喻道,IL代码像面向对象的机器码。
运行库CLR,包含一个东西,叫做,即时编译器。
当程序开始运行的时候,即时编译器,会把IL代码变成本地代码,本地代码就是机器码。
IL代码,又名托管代码。
运行库CLR,还包括其他东西,例如:
- 垃圾收集器: 清理不再引用的托管内存
- 调试器扩展: 允许在不同编程语言间调试,例如Visual Basic中启动调试会话,在c#库里继续调试
- 线程实用工具:在底层平台上创建线程
不是很懂调试器扩展的解释,如果是纯运行状态,和那么调试无关。如果是调试状态,跨语言的调试只由调试器如winbg, vs来做还不够吗,关运行库CLR里面的调试器扩展什么事呢?
.NET Framework的第一版:1.0, 就很大,有3000多个类,按大块是这么分的
- Windows Forms
- ASP.NET Web Forms
- ASP.NET Web Services
- .NET Remoting
- Enterprise Services