C#入门系列(一)——C#简介

C#入门系列目录

C#入门系列(一)——C#简介

C#入门系列(二)——第一个C#程序

C#入门系列(三)——数据类型

C#入门系列(四)——变量与常量

C# 是一个简单的、现代的、通用的、面向对象的编程语言,C#入门系列旨在向C#初学者介绍C#编程基础,学完此系列内容可编写简单的C#程序。下面就开始吧。

 

C#,读作"see sharp",别再读作"C井(jing"了,是Anders Hejlsberg (安德斯·海尔斯伯格)主持开发由微软在2002年推出基于.NET框架的,面向对象的,类型安全的高级开发语言。

C#命名启发于音乐上的音名“C♯”,在音乐中“C♯”表示C升半音,是比C高一点的音节,且“#”形似4个加号,微软借助这样的命名,意在表示C#在一些语言特性方面对C++的提升的意思。由于显示器(标准字体、浏览器等)的技术限制,且大部分的键盘布局上不存在升记号(),所以(#)被用于此编程语言的名称中。

 

C#设计目标

1.C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言

2.此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种存储器自动释放技术)。

软件必须做到强大、持久,并具有较强的编程生产力。

3.此种语言为在分布式环境中的开发提供适用的组件开发应用。

4.为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。

5.对国际化的支持非常重要。

6.C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。

7.虽然C#程序在存储和操作能力需求方面具备经济性,但此种语言在某些情况下并不能在性能和程序大小方面与C语言相抗衡。

C#发展历史

C# 1.0 

 Visual Studio .NET 2002 一起发布的 C# 版本 1.0 非常像 Java。它旨在成为一种“简单、现代、面向对象的常规用途语言”。与现在的 C# 相比,C# 1.0 版少了很多功能。你会发现自己的代码很冗长。不过凡事总要有个开始。在 Windows 平台上,C# 1.0 版是 Java 的一个可行的替代之选。

C# 1.0 的主要功能包括:

  • 结构

  • 接口

  • 事件

  • 属性

  • 委托

  • 表达式

  • 语句

  • 特性

C# 1.2 

随 Visual Studio .NET 2003 一起提供的 C# 版本 1.2。它对语言做了一些小改进。最值得注意的是,从此版本开始,当 IEnumerator 实现 IDisposable 时,foreach 循环中生成的代码会在 IEnumerator 上调用 Dispose。

C# 2.0 

从此以后事情变得有趣起来。让我们看看 C# 2.0(2005 年发布)和 Visual Studio 2005 中的一些主要功能:

  • 泛型

  • 分部类型

  • 匿名方法

  • 可以为 null 的值类型

  • 迭代器

  • 协变和逆变

除现有功能以外的其他 C# 2.0 功能:

  • getter/setter 单独可访问性

  • 方法组转换(委托)

  • 静态类

  • 委托推断

C# 一开始是面向对象的 (OO) 通用语言,而 C# 2.0 版很快改变了这一点。做好基础准备后,他们开始追求解决一些严重影响开发者的难点。且他们以显著的方式追求这些难点。

通过泛型,类型和方法可以操作任意类型,同时保持类型安全性。例如,通过 List<T>,将获得 List<string> 或 List<int> 并且可以对这些字符串或整数执行类型安全操作,同时对其进行循环访问。使用泛型优于创建派生自 ArrayList 的 ListInt 或者从每个操作的 Object 强制转换。

C# 2.0 版引入了迭代器。简单来说,迭代器允许使用 foreach 循环来检查 List(或其他可枚举类型)中的所有项。拥有迭代器是该语言最重要的一部分,显著提升了语言的可读性以及人们推出代码的能力。

C# 3.0版

C# 3.0 版和 Visual Studio 2008 一起发布于 2007 年下半年,但完整的语言功能是在 .NET Framework 3.5 版中发布的。此版本标示着 C# 发展过程中的重大更改。C# 成为了真正强大的编程语言。我们来看看此版本中的一些主要功能:

  • 自动实现的属性

  • 匿名类型

  • 查询表达式

  • Lambda 表达式

  • 表达式树

  • 扩展方法

  • 隐式类型本地变量

  • 分部方法

  • 对象和集合初始值设定项

回顾过去,这些功能中大多数似乎都是不可或缺,难以分割的。它们的组合都是经过巧妙布局。我们通常认为 C# 版本的杀手锏是查询表达式,也就是语言集成查询 (LINQ)。

LINQ 的构造可以建立在更细微的视图检查表达式树、Lambda 表达式以及匿名类型的基础上。不过无论如何 C# 3.0 都提出了革命性的概念。C# 3.0 开始为 C# 转变为面向对象/函数式混合语言打下基础。

具体来说,你现在可以编写 SQL 样式的声明性查询对集合以及其他项目执行操作。无需再编写 for 循环来计算整数列表的平均值,现在可改用简单的 list.Average() 方法。组合使用查询表达式和扩展方法让各种数字变得智能多了。

C# 4.0

C# 版本 4.0 随 Visual Studio 2010 一起发布,引入了一些有趣的新功能:

  • 动态绑定

  • 命名参数/可选参数

  • 泛型协变和逆变

  • 嵌入的互操作类型

嵌入的互操作类型缓和了部署难点。泛型协变和逆变提供了更强的功能来使用泛型,但风格比较偏学术,应该最受框架和库创建者的喜爱。命名参数和可选参数帮助消除了很多方法重载,让使用更方便。但是这些功能都没有完全改变模式。

主要功能是引入 dynamic 关键字。在 C# 4.0 版中引入 dynamic 关键字让用户可以替代编译时类型上的编译器。通过使用 dynamic 关键字,可以创建和动态类型语言(例如 JavaScript)类似的构造。可以创建 dynamic x = "a string" 再向它添加六个,然后让运行时理清下一步操作。

动态绑定存在出错的可能性,不过同时也为开发人员提供了强大的语言功能。

C# 5.0

C# 版本 5.0 随 Visual Studio 2012 一起发布,是该语言有针对性的一个版本。对此版本中所做的几乎所有工作都归入另一个突破性语言概念:适用于异步编程的 async 和 await 模型。下面是主要功能列表:

  • 异步成员

  • 调用方信息特性

调用方信息特性让你可以轻松检索上下文的信息,不需要采用大量样本反射代码。这在诊断和日志记录任务中也很有用。

但是 async 和 await 才是此版本真正的主角。C# 在 2012 年推出这些功能时,将异步引入语言作为最重要的组成部分,另现状大为改观。如果你以前处理过冗长的运行操作以及实现回调的 Web,应该会爱上这项语言功能。

C# 6.0

版本 6.0 随 Visual Studio 2015 一起发布,通过该版本,它不再推出主导性的杀手锏,而是发布了很多使得 C# 编程更有效率的小功能。以下介绍了部分功能:

  • 静态导入

  • 异常筛选器

  • 自动属性初始化表达式

  • Expression bodied 成员

  • Null 传播器

  • 字符串内插

  • nameof 运算符

  • 索引初始值设定项

其他新功能包括:

  • Catch/Finally 块中的 Await

  • 仅限 getter 属性的默认值

这些功能每一个都很有趣。但从整体来看,可以发现一个有趣的模式。在此版本中,C# 消除语言样本,让代码更简洁且更具可读性。所以对喜欢简洁代码的用户来说,此语言版本非常成功。

除了发布此版本,他们还做了另一件事,虽然这件事本身与传统的语言功能无关。他们发布了 Roslyn 编译器即服务。C# 编译器现在是用 C# 编写的,你可以使用编译器作为编程工作的一部分。

C# 7.0版

随 Visual Studio 2017 一起发布的 C# 版本 7.0 是最新的主版本。虽然该版本继承和发展了 C# 6.0,但不包含编译器即服务。以下介绍了部分新增功能:

  • Out 变量

  • 元组和析构函数

  • 模式匹配

  • 本地函数

  • 已扩展 expression bodied 成员

  • Ref 局部变量和返回结果

其他功能包括:

  • 弃元

  • 二进制文本和数字分隔符

  • 引发表达式

这些都为开发者提供了很棒的新功能,帮助编写比以往任何时候都简洁的代码。重点是缩减了使用 out 关键字的变量声明,并通过元组实现了多个返回值。

 

C# 8.0

C# 8.0 向 C# 语言添加了以下功能和增强功能:

  • Readonly 成员

  • 默认接口方法

  • 模式匹配增强功能:

  • Switch 表达式

  • 属性模式

  • 元组模式

  • 位置模式

  • Using 声明

  • 静态本地函数

  • 可处置的 ref 结构

  • 可为空引用类型

  • 异步流

  • 索引和范围

  • Null 合并赋值

  • 非托管构造类型

  • 嵌套表达式中的 Stackalloc

  • 内插逐字字符串的增强功能

 

C#版本

日期

.NET框架的版本

Visual Studio版本

C# 1.0

20021

.NET  Framework 1.0

Visual  Studio 2002

C# 1.1

C# 1.2

20034

.NET  Framework 1.1

Visual  Studio 2003

C# 2.0

200512

.NET  Framework 2.0

Visual  Studio 2005

C# 3.0

200711

.NET  Framework 3.5

Visual  Studio 2008

C# 4.0

20104

.NET  Framework 4

Visual  Studio 2010

C# 5.0

20128

.NET  Framework 4.5

Visual  Studio 2012

C# 6.0

20157

.NET  Framework 4.6

Visual  Studio 2015

C# 7.0

20173

.NET  Framework 4.6.2

Visual  Studio 2017

C# 7.1

20178

.NET  Framework 4.7

Visual Studio 2017 Version 15.3

C# 7.2

201711

.NET  Framework 4.7.1

Visual Studio 2017 Version 15.5

C# 7.3

20185

.NET  Framework 4.7.2

Visual Studio 2017 Version 15.7

C# 8.0

20194

.NET  Framework 4.8

Visual  Studio 2019

.NET Framework自2002年推出至今,框架日益臃肿庞大,而且局限于Windows平台。在2017年,微软不再完全把控操作系统领域。为了破局,微软不得不重新架构使其可跨平台,.NET Core横空出世。.NET Core是一个可以用来构建现代、可伸缩和高性能的跨平台软件应用程序的通用开发框架。可用于为Windows、Linux和MacOS构建软件应用程序。.Net Core将在后续的专题中介绍。

C#是开发.NET Core程序的不二选择,C#和.NET有强大生态系统。C#、.NET和IDE可更好地受到第三方类库和工具的支持,所有这些都将帮助您更好地构建应用。

无论你是一个毕业生,希望吸引未来的雇主,或者你是想要重新更新技能的雇员, 都应该学习.NET和C#,让你在未来10年都有足够的技能来满足行业需求。

 

欢迎关注我的微信公众号“CSharp开发”

“点赞❤️+赞赏👍是最大的鼓励!”

posted on 2020-01-07 10:31  C#小学生  阅读(2027)  评论(0编辑  收藏  举报