C# 5.0

VS2012 引入,参见:https://www.cnblogs.com/ctcx/p/5177635.html

调用者信息特性

CallerMemberNameAttribute | CallerFilePathAttribute | CallerLineNumberAttribute

.NET Framework 4.5 中新增,用于请求编译器在编译过程中进行代码的转换 。

使用方式:直接调用即可

public static void TraceMessage(string message, string errCode,
[CallerMemberNameAttribute] string memberName = "",
[CallerFilePathAttribute] string filePath = "",
[CallerLineNumberAttribute] int lineNumber = 0)

若要在 .NET Framework 4.0 中使用,需自定义特性

namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
public class CallerMemberNameAttribute : Attribute
{ } [AttributeUsage(AttributeTargets.Parameter, Inherited = false )]
public class CallerFilePathAttribute : Attribute
{ } [AttributeUsage(AttributeTargets.Parameter, Inherited = false )]
public class CallerLineNumberAttribute : Attribute
{ }
}

关键字async和await

简化异步编程,建议首先了解C# 4.0引入的:Task

在Lambda表达式中用循环变量

C#5.0中纠正循环变量覆盖,无须在循环中引入临时变量,直接常规编码即可。

C# 6.0

VS2015 引入,参考:https://www.cnblogs.com/dotnet261010/p/9147707.html

using static

命名空间语法糖,导入静态类

字符串嵌入值 | 空值运算符

$"{表达式|属性字段值}"  //简化string.Format表达式
// null值亦可调用,程序不会报错,也不会输出任何值
string name = null; name?.ToString();

对象初始化器 | 异常过滤器

IDictionary<int, string> dictNew = new Dictionary<int, string>() {
[4] = "first", [5] = "second" //索引方式初始化
};
try {} //满足条件才进入catch
catch (Exception e) when (匹配条件) { }

同时支持在catch和finally中使用await运算符。

nameof表达式

用于变量、函数、类或命名空间,返回其名称,可应用于反射等场景。

属性/方法使用Lambda表达式

public double Distance => Math.Sqrt((X * X) + (Y * Y));
public void Print() => Console.WriteLine(Name);

该功能在C#7.0中已有进一步增强。

C# 7.0

VS2017 引入,参考:https://www.cnblogs.com/cncc/p/7698543.html

模式匹配

[1]. is表达式

[2]. case分支引入类型匹配和条件判断

元组Tuples:强烈推荐

  • ValueTuple支持语义上的字段命名
  • ValueTuple是值类型(Struct)

元组解构:Deconstruct 方法成员(实例或扩展)

// 实例签名
public void Deconstruct(out type variable1, out type variable2...)
// 扩展签名
public static void Deconstruct(this type instance, out type variable1, out type variable2...)

局部函数

本质是 internal 修饰的静态函数

其他重要特性

  • out变量:无需预先声明,内联声明即可
  • ref引用强化:允许获取某个变量(引用类型)的局部引用
  • 数字分割:可以按照一定的位数用“_”进行分割
  • 二进制文本:0b开头二进制串

C# 5.0-.Net新特性的更多相关文章

  1. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  2. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  3. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

  4. 相比于python2.6,python3.0的新特性。

    这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...

  5. MySQL 8.0 InnoDB新特性

    MySQL 8.0 InnoDB新特性 1.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe,metadata管理更完善 2.快速在线加新列(腾讯互娱DBA团队贡献) 3. ...

  6. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性

    Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...

  7. [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性

    从PHP 5.6.x 移植到 PHP 7.0.x 新特性: 1.标量类型声明 字符串(string), 整数 (int), 浮点数 (float), 布尔值 (bool),callable,array ...

  8. servlet3.0 的新特性之二注解代替了web.xml配置文件

    servlet3.0 的新特性: 注解代替了 web.xml 文件 支持了对异步的处理 对上传文件的支持 1.注解代替了配置文件 1.删除了web.xml 文件 2. 在Servlet类上添加@Web ...

  9. C# 6.0/7.0 的新特性

    转眼C#语言都已经迭代到7.0版本了,很多小伙伴都已经把C# 7.0 的新特性应用到代码中了,想想自己连6.0的新特性都还很少使用,今天特意搜集了一下6.0和7.0的一些新特性,记录一下,方便查阅. ...

  10. C#6.0的新特性之内插字符串

    https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interpolated-strings C# 6 ...

随机推荐

  1. canvas标签的基本用法

    1.canvas和其他标签一样使用,但是IE8以下是不支持的,可以在canvas里面加一个span用来提示,例如: <canvas> <span>IE8不支持canvas< ...

  2. Android Activity切换(跳转)时出现黑屏的解决方法

    在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在 ...

  3. DB2 字符串的字段转为整形时的问题

    正确语句: select int(cast(substr(dpt_leader_ids,4,posstr(dpt_leader_ids,',0)')-4) as varchar(8))), d.* f ...

  4. 第三章 形容词(Les adjectifs)

    ★形容词的性(Le genre de l'adjectif ) ()一般规则是在阳性形容词后加-e:         français ➞francaise法国的         content ➞c ...

  5. HDU 2089 不要62 (递推+暴力或者数位DP)

    题意:中文题. 析:暴力先从1到1000000,然后输出就好了. 代码如下: #include <iostream> #include <cstdio> #include &l ...

  6. UVa 11384 Help is needed for Dexter (递归)

    题意:给定一个n表示1到n的序列,让你用最小的步数把这个序列都变为0,每个操作可以从序列中选择一个或多个个,同时减掉一个正整数,求最少的步数. 析:一看这个题,感觉挺高深的,但是静下心来想想,其实挺简 ...

  7. CentOS中的一些小技巧和特殊知识

    一:软件: firefox 1.在tab栏右键可以打开上一次关闭的标签. 2.在上面的搜索栏可以添加搜索引擎,这样就不需要再打开标签页访问搜索引擎主页来搜索了. 3.获取firefox下载弹框的资源U ...

  8. Kolakoski

    Kolakoski序列:我们知道的还是太少 上帝创造了整数,其余的则是我们人类的事了.正因为如此,质数.完全数.Fibonacci 数之类的数列才会让数学家们如痴如醉,因为它们的存在是如此自然,没有任 ...

  9. java thrift返回List异常

    对于下段代码: public List<String> hmget(String key, List<String> fields) throws org.apache.thr ...

  10. HDU1254 推箱子(BFS) 2016-07-24 14:24 86人阅读 评论(0) 收藏

    推箱子 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推 ...