关于贵客访问《C#学习笔记》的温馨提示:
- 本笔记用于个人学习C#技术的知识点、实例练习记录与心得记录
- 鄙人愿意和喜欢相关技术或者正打算学习C#的朋友进行交流学习
- 由于是个人是初次学习且该记录为学习笔记,所以难免会有错误或者不清晰的地方,这些地方会在后面的学习中不断改正和改善
- 对于已经出现的错误,也希望来到博客的人能指出并提示我或指导我,在此感谢大家了
- 对于决定共同学习的朋友(零基础),请看一下以下提示:
- 初学者不要过于钻牛角尖,鄙人的学习笔记都是从最基础的开始做的,有理论也有实例
- 每篇开头会有概要内容,其中标记“了解”标记的内容,你只用大概了解就行了,因为这些知识的深入学习都需要你积累更多的基础知识和编程经验
- 对于实例的代码,都将会根据学习内容进行详解,当然如果示例代码中出现了你还没见过而我又没详解的代码,说明正在学习的内容暂时还不需要你理解这些代码
- 暂时就这些了~~总之学习就是循序渐进的,理论的基础带你开始代码的旅程,而不断的练习又将带你走入理论的原理,而深入学习了理论的原理后,你又将会把代码写得更加出色漂亮~~当然,我也还没达到那个境界,所以就必须做到——多写多练,时时刻刻的坚持写代码~~~
概要内容
- .NET Framework简介“了解”
- .NET Framework内容“了解”
- 使用.NET Framework编写应用程序简介“了解”
.NET Framework简介
- .NET Framework 是Microsoft为开发应用程序而创建的一个具有革命意义的平台
- 这句话并没有说“在Windows操作系统上开发Windows应用程序”
- 跨平台特性
- 桌面客户端程序开发
- Windows应用程序
- Linux发行版应用程序(Mono项目)
- Mac OS应用程序(Mono项目、Xamarin)
- 移动客户端程序开发
- UWP应用
- Android应用(Xamarin)
- iOS应用(Xamarin)
- 网络程序开发
- Azure云
- 跨语言特性
- .NET Framework支持使用多种编程语言进行访问,包括多种现代语言和旧语言
- .NET Framework支持的编程语言
- C#
- Visual Basic
- C/C++
- F#
- JavaScript
- Python
- COBOL
- ……
- 对于主流语言或者有前景的语言,Microsoft或第三方开发人员都在使其能支持访问.NET Framework
- 所有能得到.NET Framework支持的编程语言,彼此之间都可通过该平台进行通信
- 使用.NET Framework的一个重要原因是它可以作为集成各种操作系统的方式
.NET Framework的内容
- .NET Framework主要包含一个庞大的代码库,可以在客户语言(如C#)中通过面向对象编程技术(OOP)来使用这些代码
- 这个库分为多个不同的模块
- 开发者根据自己希望得到的结果来选择相应的库使用
- 不同操作系统可以根据各自的特性,支持该平台中的部分或全部模块
- 举例:Windows支持全部模块,而Windows Phone支持所有核心模块而不用支持某些更高级的模块
- .NET Framework库定义了一些基本类型。
- 类型是数据的一种表达方式
- 指定基本类型有助于使用.NET Framework支持的各种语言之间进行交互操作
- .NET Framework还包含.NET公共语言运行库(Common Language Runtime,CLR)
- CLR负责管理用.NET库开发的所有应用程序的执行
使用.NET Framework编写应用程序
- 使用.NET Framework编写程序,就是使用.NET代码库编写代码
- CIL和JIT
- CIL
- 在编译使用.NET Framework的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用中间语言(Common Intermediate Language,CIL)代码
- CIL代码并非专门用于任何一种操作系统,也非专门用于C#
- 这个编译步骤由Visual Studio完成
- JIT
- JIT全称Just-In-Time,反映了CIL代码仅在需要时才编译的事实
- 要执行.NET应用程序,必须把CIL代码编译为专用于OS和目标机器结构的本机代码,这样OS才能执行应用程序
- 这个编译步骤由Just-In-Time(JIT)编译器完成
- 该步骤可以在应用程序运行过程中动态发生
- 该编译过程会在后台自动进行,并不需要人工干预
- 开发人员一般不需要关心给过程,除非要编写性能十分关键的代码
- CIL代码是独立于计算机、操作系统和CPU的,JIT编译器有用于不同CPU/计算机结构的种类,CIL会使用合适的编译器创建所需的本机代码
- 程序集
- 在编译应用程序时,所创建的CIL代码存储在一个程序集中
- 程序集包括
- 可执行应用程序文件
- 举例:比如可独立运行于Windows上的.NET应用程序,其扩展名为.exe
- 其他应用程序使用的库
- 元信息
- 元信息允许程序集是完全自描述的,不需要其他信息就可以使用程序集
- 也就是说,我们不会遇到没有把需要的数据添加到系统注册表而导致程序无法运行的问题
- 程序集中包含的数据信息,也称为元数据
- 可选资源
- 托管代码
- CLR管理着应用程序,其方式是管理内存、处理安全性以及允许进行跨语言调试等
- CLR的任务
- 将开发者的代码编译为CIL代码
- 再用合适的JIT编译器将CIL代码编译为目标系统和机器结构的本机代码
- 管理正在执行的用.NET Framework编写的代码
- 垃圾回收
- 非托管代码与应用程序
- 完全不访问.NET Framework直接访问目标OS系统接口或目标架构的代码
- 不受CLR控制运行的应用程序属于非托管类型
- C/C++等”低级“的高级语言可以编写该类程序
- C#编程中,只能编写在托管环境下运行的代码,开发者使用CLR的托管功能,让.NET处理与操作系统的任何交互
- 垃圾回收
- 托管代码最重要的一个功能是垃圾回收(garbage collection)
- 该.NET方法确保应用程序不在使用某些内存时,就会完全释放这些内存
- 垃圾回收机制不是实时触发的,而是系统根据实际情况选择合适和时机回收
- 垃圾回收一般不需要程序员负责,由系统自动运行
- 善用垃圾回收机制与手动垃圾回收
- 垃圾回收这项工作执行时间与时间间隔是不可预知的,所以设计应用程序时必须留意这一点
- 需要许多内存才能运行的代码与性能要求较高的代码,开发者应自己完成垃圾回收,而不是等待系统来完成
- 图解以上内容
- 使用某种.NET Framework支持的语言(这里以C#为例)编写应用程序代码
- 把代码编译为CIL,存储在程序集中
![技术分享](http://image.bubuko.com/info/201604/20180110185319437830.jpg)
-
- 在执行代码时(如果这是一个可执行文件,就自动运行,或者在其他代码使用它时运行),首先必须使用JIT编译器将代码编译为本机代码
![技术分享](http://image.bubuko.com/info/201604/20180110185319441736.jpg)
-
- 在托管的CLR环境下运行本机代码,以及其他应用程序或进程
![技术分享](http://image.bubuko.com/info/201604/20180110185319444666.jpg)
- 链接
- 编写代码时,可以把代码放在多个源代码文件中,再把它们编译到一个程序集中,这个过程称为链接
【C#学习笔记】No.001 初识.NET Framework
原文:http://www.cnblogs.com/Eternity-LX/p/csharp_note_NO001_dotNETbriefing.html