c#高级编程 (第5页)【C# 1.0】【.NET Framework 1.0】

252 阅读2分钟

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

image.png