C#与.NET概述
来源:互联网 发布:sql语句union all 编辑:程序博客网 时间:2024/05/18 01:36
本文大部分来源于北京大学网易云课堂《c#程序设计》
1. C#
C#是由Anders Hejlsberg(安德斯-海森博格)[1]创建的。
2. .NET
2.1 .NET之前
备注:图片来源[4]
2.2 .NET
.NET框架(.NET Framework)是由微软开发,一个致力于敏捷软件开发(Agile softwaredevelopment)、快速应用开发(Rapidapplication development)、平台无关性和网络透明化的软件开发平台[3] 。
备注:关于.net的发展历程,推荐查看文献[2][6]
整体来看分为4个部分:CLR,各种库,各种语言以及开发工具VS。
.NET主要特性:
- 简单的开发和部署
- 统一的编程模型
- 提供健壮、安全的执行环境
- 支持多种编程语言
- 丰富的类库支持
3. CLR:公共语言运行时,Common Language Runtime
设计目标:
- 简化开发:安全性,内存管理,垃圾回收
- 简化应用程序部署
- 基类库
- 支持多种语言
类似于Java中的虚拟机,相当于在硬件之上建立一个虚拟的一个机器,在这个机器上运行C#程序,其实运行的是中间指令。其编译成元数据文件,里面是中间代码,构成.exe文件。这个.exe文件不是最终的机器指令。在运行的时候,CLR通过即时编译器(JIT)来编译成本机代码。从这里可以看到,通过产生中间代码的机制,.NET可以支持很多语言。
.EXE文件包含IL(Intermediate Language)指令,和元信息。我们可以通过反编译工具ildasm.exe来查看其中的指令。
在电脑中的位置是:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX4.5.1Tools\ildasm.exe”。
关于更详细的运行机制,读者可以参考[5]。
选择文件-打开,之后在选择.exe文件就可以出现相应的IL。
4. 基本的应用类型
- 控制台程序
- Windows应用程序
这里面分化出一种WPF程序 - Web应用程序
这里面分化成mobile程序
4.1 控制台程序
- Main()方法是程序的入口,它有固定的书写格式:public static void Main(string[] args)
可以没有public,也可以没有string[] args - 可以直接输入svm,然后按2次Tab键也可以。
- Ctrl+F5,编译及运行(不调试)
4.2 Windows应用程序
- 又称winForm应用
- 事件驱动的程序设计
4.3 Web应用程序
参考文献
[1] http://kb.cnblogs.com/page/87320/
[2] http://developer.51cto.com/developer/evolution/
[3] https://baike.baidu.com/item/.net%E6%A1%86%E6%9E%B6/2880331?fr=aladdin
[4] http://www.cnblogs.com/moonache/p/5995866.html
[5] http://www.cnblogs.com/muyue/archive/2012/11/13/2768126.html
[6] http://www.cnblogs.com/xiaofeixiang/p/3936217.html
- C#与.NET概述
- 第一天 .NET与C#概述
- .net概述---from《C#与.net程序员面试宝典》
- c# .NET 概述
- 黑马程序员——.net与c#概述
- Net框架和C#概述
- 【C#】.NET和C#概述
- C#概述与概念(一)
- ADO与ADO.NET概述
- C#基础-DotNet与C#概述
- Visual C# .NET产品概述(转)
- [连载]C#程序设计(01)--- .NET概述
- 1-.net与C#
- C#3.0与.NET
- C#与.net关系
- ADO.NET 与 C#
- .NET Framework 与C#
- C#与.Net
- 【LeetCode】C# 101、Symmetric Tree
- 流媒体测试的测试点
- 设置Tomcat的UTF-8编码
- Trafodion 事务隔离
- [转]Eclipse进行可视化的GUI开发3大GUI插件
- C#与.NET概述
- Hashmap的实现
- Mybatis中的CDATA标签的用法
- Redis pipline
- SpringCloud(第 030 篇)配置服务端ClientServer对配置文件内容进行对称加解密
- JS获取当前日期(精确到秒)
- 不同网段的通信(访问互联网)
- [FAQ19122]Android N 首次开机不随sim卡自适应语言修改方案
- 人脸检测--Face Detection with End-to-End Integration of a ConvNet and a 3D Model