• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#6.0中10大新特性的应用和总结

C#6.0中10大新特性的应用和总结

作者:浮云也是种寂寞 字体:[增加 减小] 来源:互联网 时间:2017-05-28

浮云也是种寂寞 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

微软于2015年7月21日发布了Visual Studio 2015, .NET 2015, .NET Framework 4.6, ASP.NET 4.6, Azure SDK 2.7 for .NET, C# 6.0, F# 4.0, TypeScript 1.5, Visual Studio Android 模拟器 等重量级开发产品。

由于项目升级到了.NetFramework 4.6.1,开发工具转向了VS2015,趁机尝试下C#6.0。结果网上的教程不进人意,许久都没有更新,只好自己做一下总结。

1.自动属性初始化(Auto-property initializers)

{
 
    public string Name { get; set; } = "summit";
 
    public int Age { get; set; } = 22;
 
    public IList<int> AgeList
    {
        get;
        set;
    } = new List<int> { 10,20,30,40,50 };
 
}</div>

对于只读属性也可以这样直接初始化(C#5.0不支持),也可以直接在构造函数里初始化

{
    public string Name { get; }
    public Customer(string first, string last)
    {
        Name = first + " " + last;
    }
}</div>

2.字符串嵌入值(String interpolation)

在之前版本的String.Format中有多少个参数就要写多少个占位符还必须按照顺序,否则就报错.参数一多,这样搞的话确实头疼.新版本中在字符串前用$来标识后边的字符可以使用{对象}来作为占位符.看个例子.

Console.WriteLine($"年龄:{account.Age}");
Console.WriteLine($"{(account.Age<=22?"小鲜肉":"老鲜肉")}");</div>

如果想输出{或}符号,写两个即可,如$"{{".
注意这个$符号,网上的N多教程都是没有这个东东的.是直接"\{ account.Age \}",这种方式在新版本里已经被抛弃了.

3.导入静态类(Using Static)

像之前使用Math这个静态类的时候要先导入System命名空间后才能使用它.现在可以直接导入这个静态,然后代码中直接使用其函数.

 
Console.WriteLine($"之前的使用方式: {Math.Pow(4, 2)}");
Console.WriteLine($"导入后可直接使用方法: {Pow(4,2)}");</div>

注意这里是using static ...
如果某个命名空间下有n个方法,用这种方式直接引入单个静态类而不用引用所有方法还是挺方便的.

4.空值运算符(Null-conditional operators)

之前写过无数个这样的判断代码

{
     //不为null的操作
}
return null;</div>

现在使用可以简化这样方式.

 
Console.WriteLine("{0}", (person.list?.Count ?? 0));</div>

如果account.AgeList为空则整个表达式返回空,否则后边的表达式的值.

5.对象初始化器(Index Initializers)

这种方式可以给字典或其他对象通过索引赋值初始化.

       [1]="first",
       [2]="second"
};
foreach(var dic in dict)
{
    Console.WriteLine($"key: {dic.Key} value:{dic.Value}");
}</div>

output:
key: 1 value:first
key: 2 value:second

6.异常过滤器(Exception filters)

{
    Console.WriteLine("log");
    return true;
}
static void TestExceptionFilter()
{
    try
    {
        Int32.Parse("s");
    }
    catch (Exception e) when (Log(e))
    {
        Console.WriteLine("catch");
        return;
    }
}</div>

当when()里面返回的值不为true,将持续抛出异常,不会执行catch里面的方法.

7.nameof表达式 (nameof expressions)

在对方法参数进行检查时经常这样写:

{
     if (account == null)
         throw new ArgumentNullException("account");
}</div>

如果某天参数的名字被修改了,下面的字符串很容易漏掉忘记修改.
使用nameof表达式后,编译的时候编译器将检查到有修改后自动导航与重构(-_-! 不知道翻译的对不对)

{
     if (account == null)
         throw new ArgumentNullException(nameof(account));
}</div>

8.在cath和finally语句块里使用await(Await in catch and finally blocks)

c#5.0里是不支持这么写.

try
{
    res = await Resource.OpenAsync(…);       // You could do this.
    …
}
catch(ResourceException e)
{
    await Resource.LogAsync(res, e);        

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28c#基础之数组与接口使用示例(遍历数组 二维数组)
  • 2017-05-28c# 常量和字段
  • 2017-05-28详解C#用new和override来实现抽象类的重写区别
  • 2017-05-28WinForm特效之桌面上的遮罩层实现方法
  • 2017-05-28C#编写ActiveX网页截图控件
  • 2017-05-28c#文件助手类分享(读取文件内容 操作日志文件)
  • 2017-05-28C#实现的调用DOS命令操作类实例
  • 2017-05-28c# HttpWebRequest通过代理服务器抓取网页内容应用介绍
  • 2017-05-28浅谈C# 中的可空值类型 null
  • 2017-05-28C#制作简易的屏保

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#自定义字符串补0函数实例
    • C#中判断一个集合是否是另一个集合的子集的简单方法
    • 详解二维码生成工厂
    • C#实现更改MDI窗体背景颜色的方法
    • c#判断网络连接状态的示例分享
    • C#多线程学习之(四)使用线程池进行多线程的自动管理
    • C# SendKeys使用方法介绍
    • C#中Predicate<T>与Func<T, bool>泛型委托的用法实例
    • C#定义简单的反射工厂实例分析
    • C#获取任务栏显示进程的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有