c#----语言介绍

1.什么是c#语言?

C#(读作“See Sharp”)是一种面向对象类型安全的编程语言。 用 C# 可以开发出在 .NET 上运行的多种安全可靠的应用程序。 C# 源于 C 语言系列,C、C++、Java 和 JavaScript 程序员很快就可以上手使用。

2. .NET 体系结构

C# 程序在 运行在.NET 上,而 .NET 是名为公共语言运行时 (CLR) 的虚拟执行系统(VEM)和一组类库。 CLR 是 Microsoft 对公共语言基础结构 (CLI) 国际标准的实现。 

用 C# 编写的源代码被编译成符合 CLI 规范的中间语言 (IL)。 IL 代码和资源(如位图和字符串)存储在扩展名通常为 .dll 的程序集中。 程序集包含一个介绍程序集的类型、版本和区域性的清单。

执行 C# 程序时,程序集将加载到 CLR。 CLR 会直接执行实时 (JIT) 编译,将 IL 代码转换成本机指令。 CLR 可提供其他与自动垃圾回收、异常处理和资源管理相关的服务。 由 CLR 执行的代码有时称为“托管代码”。 “非托管代码”编译为面向特定平台的本机语言。

c#----语言介绍_第1张图片

3 C#版本与.NET版本对应关系以及各版本的特性

C#版本 .NET版本 发布日期 特性
C# 1.0 .NET Framework 1.0 2002-02-13 委托、事件
C# 1.1 .NET Framework 1.1 2003-04-24 APM(异步编程模型)
C# 2.0 .NET Framework 2.0 2005-11-07 泛型、匿名方法、迭代器、可空类型
C# 3.0 .NET Framework 3.0 2007-11-06 隐式类型
.NET Framework 3.5 2007-11-19 对象集合初始化、自动实现属性、匿名类型、扩展方法、查询表达式、Lambda表达式、 表达式树、分部类和方法、Linq
C# 4.0 .NET Framework 4.0 2010-04-12 动态绑定、命名和可选参数、泛型的协变和逆变、互操作性
C# 5.0 .NET Framework 4.5 2012-08-15 异步和等待(async和await)、调用方信息(Caller Information)
C# 6.0 .NET Framework 4.6 2015-07-20 静态导入、C# 6 中的新增功能
.NET Core 1.0 2016-06-27
C# 7.0 .NET Framework 4.6.2 2016-08-02 元组、C# 7.0 中的新增功能
C# 7.1 .NET Framework 4.7 2017-04-05
.NET Core 2.0 2016-08-14 .NET Core 2.0 的新增功能
C# 7.2 .NET Framework 4.7.1 2017-10-17
C# 7.3 .NET Framework 4.7.2 2018-04-30
.NET Core 2.1 2018-05-30 .NET Core 2.1 的新增功能
.NET Core 2.2 2018-12-04 .NET Core 2.2 的新增功能
C# 8.0 .NET Framework 4.8 2019-04-18 C# 8.0 中的新增功能
.NET Core 3.0 2019-09-23 .NET Core 3.0 的新增功能
.NET Core 3.1 2019-12-03 .NET Core 3.1 的新增功能
C# 9.0 .NET 5 2020-09-04 C# 9.0 中的新增功能
.NET 5 2020-10-13 What's new in .NET 5

4.c#与c++的比较

项目 c++ c#
编译目标 直接编译为本地代码 编译为中间语言(IL)执行时再通过JIT(Just-in-time)编译器将需要的模块编译为本地代码
内存管理     显示删除动态分配给堆的内存 垃圾回收机制在合适的时机回收不再使用的内存
指针   容易引起内存泄露 使用对类实例的引用,也可以在非类型安全状态下也可以使用指针。
字符串处理 字符串作为一种基本数据类型来对待,比c++对字符串的处理简单的多
继承  允许类的多继承 只允许类的单继承,通过接口实现多继承

5.c#与java比较:

项目 c#  Java
运行环境   可在具有CLR的平台上运行 可在具有JVM的平台上运行
完全面向对象  
多重继承 不支持 不支持
内存管理 使用垃圾回收机制 使用垃圾回收机制
异常处理 try-catch-finally try-catch-finally
指针  只能在非托管代码段内使用 不支持
类型安全性验证 强制类型验证 强制类型验证
命名空间 支持 支持
布尔值 只能为true或false   只能为true或false
变量初始化 不能使用未初始化的变量 不能使用未初始化的变量
中间语言处理 将MSIL转换为JIT机器码 Java字节码
访问修饰符 public、protected、private、internal、partial public、protected、private、friendly
WebService   支持 支持

你可能感兴趣的:(c#语言,c#)