C#语言特性的发展历程

2017-05-30  本文已影响0人  指尖的霜

最近再刷了一遍《深入理解C#》,比起上次刷,好像只有泛型和Linq方面的知识加深了理解,果然还是用的少的东西自然理解起来就困难一些。今年C#的版本号已经到了7.0,这本书的第三版是介绍到5.0,趁着这个机会把版本迭代中加入的语言特性做一个简要的总结

C# 1.x

不算后面的小版本号其实是可以统称为C# 1的,但是其实它包含了1.0和1.2两个版本号(没有1.1),分别在2002年和2003年发布。这个版本建立了C#语言的整体框架,面向对象中的封装、继承、多态已经得以很好的体现。
它当时已经提供了下面这些东西:

C# 2.0

C# 2.0版本是2005年末发布的,最亮眼的特性自然就是* 泛型 * ,它也是.Net 2.0的CLR中最重要的特性,其他的一些特性也给开发者提供了极大的便利,还是用列表来总结:

除了上面这些,还有些稍小的特性:

string name;
public string Name
{
    get { return name; }
    private set { name = value; }
}

C# 3.0

C# 3.0中我们终于迎来了重量级的特性Linq,我在Coding时常常感叹,要是没有Linq,那得多写多少代码。无论是Linq to Object还是的Linq to SQL、Linq to XML,实在是带来了太多的便利,带来了实打实的效率上的提升。
3.0中包含了下面这些新特性:

var list = new List<string> { "AB","CD","EF" };
var tom = new Person { Name="Tom",Age=10 };
var tom = new { Name="Tom",Age=10 };

C# 4.0

C# 4.0中的特性旨在提高互操作性,因此看起来更像是小修小补(除了动态类型),它包括:

C# 5.0

C# 5.0的主旨很明确,就是围绕异步编程进行的。我在写前面版本特性时特地把异步编程的演变放在里面,就是想体现对于异步编程这个主题在时间线上的演变过程,它的三次演变(反别在1.x、2.0和4.0)最终在C#中合并为async和await两个极其简单的语法糖来实现。这个版本提供的特性:

string[] items = { "x","y","z" };
var actions = new List<action>();
foreach(string item in items)
{
    actions.add(()=>Console.WriteLine(item)); //输出“xyz”,之前版本是“zzz”
}

C# 6.0

书中没有涉及到C# 6.0的语言特性,下面的内容是根据网上的资料整理的

public string Name { get; set; } = "Tom";
var dic = new Dictionary<string, string>()
{
    ["name"]  = "Tom",
    ["gender"] =  "male" 
};
try
{
    ...
}
catch (Exception ex) if (ex.InnerException == null)
{
    ...
}
list?.Count; //list不为null则返回属性Count,否则返回null
var tom = new { Name="Tom",Age=10 };
Console.WriteLine($"Age:{tom.Age}  Name:{tom.Name}");

C# 7.0

C# 7.0推出还不算太久,和上个版本一样,并没有太亮眼的特性。此部分的内容参考这篇文章[干货来袭]C#7.0新特性(VS2017可用)

上一篇 下一篇

猜你喜欢

热点阅读