自从2000年初期颁布以来,c#编程语言不停的得到改造,使我们能够越发清晰的编写代码,也越发容易维护我们的代码,增强的成果已经从1.0搞到啦7.0甚至7.1,每一次自新都陪同着.NET Framework库的相应撑持,也不停的带给我们等候与惊喜。下面我们就对c#一路走到此刻,做一个回顾与学习。
C#语言方针与前行c#的设计方针是有以下几点:
旨在是一种简单,现代,通用的面向东西编程语言。
语言及其实现应该为软件工程道理供给撑持,例如强类型查抄,数组维度查抄,未初始化的变量引用检测以及自动垃圾收集。软件的鲁棒性,耐久性和措施员的出产力很重要。
旨在用于开发适用于漫衍式环境中部署的软件组件。
便携性对付源代码和措施员非常重要,出格是已经熟悉C和C ++的措施员。
撑持国际化长短常重要的。
C#适用于为托管和嵌入式系统编写应用措施,从使用庞大的操纵系统到非常小的专用成果都非常适用。
虽然C#应用措施在内存和措置惩罚惩罚能力要求方面是经济的,但是该语言并不筹算直接用C或汇编语言直接与性能和尺寸进行竞争。
c#版本
c#版本中添加的成果:
C#2.0
泛型
部分类型
匿名要领
迭代器
可空类型
Getter / setter单独可访谒性
要领组转换(代表)
Co- and Contra-variance for delegates
静态类
Delegate inference
C#3.0
隐式类型局部变量
东西和收集初始化器
自动实现的属性
匿名类型
扩展要领
盘问表达式
Lambda表达式
表达树
部分要领
C#4.0
动态绑定
定名和可选参数
Generic co- and contravariance
嵌入式互操纵类型(“NoPIA”)
C#5.0
异步要领
Caller info attributes
C#6.0
Compiler-as-a-service(Roslyn)
将静态类型成员导入定名空间
异常过滤器
在Catch和Finally中使用Await
自动属性初始化器
只读属性的默认值
Expression-bodied members
Null-conditional operators(空条件运算符,简洁查抄)
字符串插值
nameof operator
字典初始化器
out变量
模式匹配
元组
解构
局部函数
数字分隔断绝分手符
二进制文字
局部引用和引用返回
扩展异步返回类型
表达式的结构函数和finalizers
Expression bodied getters and setters
throw表达式
C#7.1Async main
默认表达式
参考文档:
c#7.0新特性详解在2016年Visual Studio “15” Preview 4颁布,c# 7.0便开始表现,此刻vs2017已经颁布,c#7.0带给我们的惊喜,我们也该一探究竟啦。
C#7.0增加许多新成果,,重点是数据,代码简化和性能上。
Out variables目前在C#中,使用out参数不像我们想要的那么流畅。在使用out参数挪用一个要领之前,首先必需声明变量来通报给它。您也不能使用var它们来声明它们,但需要指定完整的类型。
public void PrintCoordinates(Point p) { int x, y; //必需声明 p.GetCoordinates(out x, out y); WriteLine($"({x}, {y})"); }
在c#7中再来看看
public void PrintCoordinates(Point p) { p.GetCoordinates(out int x, out int y); WriteLine($"({x}, {y})"); }
模式匹配c#7中
public static void PrintStars(object o) { if (o is int i) Console.WriteLine(i + 12); }
以前版本需要转化
public static void PrintStars(object o) { if (o is int) Console.WriteLine(Convert.ToInt32(o) + 12); }
Switch statements with patterns 扩展switch语句使用模式匹配public static void PrintStars(object o) { switch (o) { case Print p: break; case int a: break; case String b when b=="123": break; } } } public class Print { public string PrintName { get; set; } public string MoBanPath { get; set; } public int Count { get; set; } } 元组(Tuples)
注意:元组依赖于一组根本类型,不包孕在预览4中。要使成果正常事情,您可以通过NuGet轻松获取它们:
右键单击解决方案资源打点器中的项目,然后选择“打点NuGet软件包...”
选择“浏览”选项卡,选中“包罗预刊行”,然后选择“nuget.org”作为“包源”
搜索“System.ValueTuple”并安置它。