织梦cms怎么搭建网站,ui设计培训课程,网站改版影响排名吗,济南兼职做网站序言
自从2000年初期发布以来#xff0c;c#编程语言不断的得到改进#xff0c;使我们能够更加清晰的编写代码#xff0c;也更加容易维护我们的代码#xff0c;增强的功能已经从1.0搞到啦7.0甚至7.1#xff0c;每一次改过都伴随着.NET Framework库的相应支持#xff0c;也…序言
自从2000年初期发布以来c#编程语言不断的得到改进使我们能够更加清晰的编写代码也更加容易维护我们的代码增强的功能已经从1.0搞到啦7.0甚至7.1每一次改过都伴随着.NET Framework库的相应支持也不断的带给我们期待与惊喜。下面我们就对c#一路走到现在做一个回顾与学习。
C#语言目标与前行
c#的设计目标是有以下几点
旨在是一种简单现代通用的面向对象编程语言。语言及其实现应该为软件工程原理提供支持例如强类型检查数组维度检查未初始化的变量引用检测以及自动垃圾收集。软件的鲁棒性耐久性和程序员的生产力很重要。旨在用于开发适用于分布式环境中部署的软件组件。便携性对于源代码和程序员非常重要特别是已经熟悉C和C 的程序员。支持国际化是非常重要的。C适用于为托管和嵌入式系统编写应用程序从使用复杂的操作系统到非常小的专用功能都非常适用。虽然C应用程序在内存和处理能力要求方面是经济的但是该语言并不打算直接用C或汇编语言直接与性能和尺寸进行竞争。
c#版本 c#版本中添加的功能
C2.0
泛型部分类型匿名方法迭代器可空类型Getter / setter单独可访问性方法组转换代表Co- and Contra-variance for delegates静态类Delegate inference
C3.0
隐式类型局部变量对象和收集初始化器自动实现的属性匿名类型扩展方法查询表达式Lambda表达式表达树部分方法
C4.0
动态绑定命名和可选参数Generic co- and contravariance嵌入式互操作类型“NoPIA”
C5.0
异步方法Caller info attributes
C6.0
Compiler-as-a-serviceRoslyn将静态类型成员导入命名空间异常过滤器在Catch和Finally中使用Await自动属性初始化器只读属性的默认值Expression-bodied membersNull-conditional operators空条件运算符简洁检查字符串插值nameof operator字典初始化器
C7.0
out变量模式匹配元组解构局部函数数字分隔符二进制文字局部引用和引用返回扩展异步返回类型表达式的构造函数和finalizersExpression bodied getters and settersthrow表达式
C7.1
Async main默认表达式
参考文档https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#cite_note-roslyn_6-47
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 b123: 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”并安装它。
static void Main(string[] args) { var tuple (a: 10, b: 123); Console.WriteLine($a:{tuple.a},b:{tuple.b}); var result1 GetS(); var result Get(); Console.WriteLine($Item1:{result1.Item1},Item2:{result1.Item2},Item3:{result1.Item3}); Console.WriteLine($a:{result.a},b:{result.b},c:{result.c}); Console.ReadLine(); } static (string, int, DateTime) GetS() { return (abc, 123, DateTime.Now); } static (string a, int b, DateTime c) Get() { return (a: abc, b: 123, c: DateTime.Now); }
部函数
简单的说就是在方法里面写方法然后自己调用。
static void Main(string[] args){Console.WriteLine(${Get(123)},{Get(abc)},{Get(null)});Console.ReadLine();}public static string Get(object a){ return GetP();string GetP(){if (a is int v) return v ;if (a is string b) return b;return ccc;}}
Literal improvements
C7.0允许在数字文字中_作为数字分隔符出现
var d 123_456;
var x 0xAB_CD_EF;
你可以把它们放在数字之间以提高可读性。它们对价值没有影响。
另外C7.0引入了二进制文字因此您可以直接指定位模式而不必以心脏知道十六进制符号。
var b 0b1010_1011_1100_1101_1110_1111;
更多c#7.0的特性
到此我就不在一个个的上演c#7.0的其他功能啦。如果你想深入其他仔细阅读下面的文档
请参考文档https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
c#6.0新语言功能详解
以下新功能在VS 2015及17中实现并可用。 ADD:新增Exists:已存在N/A对该语言没有意义No不适用此版本。
下面我简述几个新功能剩下的我会把文档连接拿出来自己观摩。
字符串插值
上面的代码中都有体现。
var s ${p.Name} is {p.Age} year{{s}} old;
字典索引初始化
var numbers new Dictionaryint, string {[7] seven,[9] nine,[13] thirteen
};
自动属性初始化
public class Customer
{public string First { get; set; } Jane;public string Last { get; set; } Doe;
}
using引用静态类
using static System.Console;
using static System.Math;
using static System.DayOfWeek;
class Program
{static void Main(){WriteLine(Sqrt(3*3 4*4)); WriteLine(Friday - Monday); }
}
更多c#6.0语言新特性
线上代码可执行演示文档连接http://www.volatileread.com/Wiki/Index?id1075 效果如下 参考文档https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
c#2.0-5.0参考文档
c#5.0参考文档 连接地址https://blogs.msdn.microsoft.com/mvpawardprogram/2012/03/26/an-introduction-to-new-features-in-c-5-0/
c#4.0参考文档
连接地址https://msdn.microsoft.com/en-us/magazine/ff796223.aspx
c#3.0参考文档
连接地址https://msdn.microsoft.com/en-us/library/bb308966.aspx
c#2.0参考文档
连接地址https://msdn.microsoft.com/en-us/library/7cz8t42e(vvs.80).aspx
原文地址http://www.cnblogs.com/knowledgesea/p/6694979.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注