C# 6.0 新功能Top 10
来源:互联网 发布:淘宝网货源怎么找 编辑:程序博客网 时间:2024/06/06 00:44
http://www.developer.com/net/csharp/top-10-c-6.0-language-features.html
1,单行函数表达式化
用=>简化只有一行的函数。
class Employee{ // Method with only the expression public static int CalculateMonthlyPay(int dailyWage) => dailyWage * 30;}
2,?--条件 运算符
以前需要显式地写判断非空的条件语句
private void GetMiddleName(Employee employee){ string employeeMiddleName = "N/A"; if (employee != null && employee.EmployeeProfile != null) employeeMiddleName = employee.EmployeeProfile.MiddleName;}
现在可以用一行代码搞定
private void GetMiddleName(Employee employee){ string employeeMiddleName = employee?.EmployeeProfile?.MiddleName ?? "N/A";}
3,自动属性初始化器
不用再弄一个private的set和类变量了。如下:
class PeopleManager{ public List<string> Roles { get; } = new List<string>() { "Employee", "Managerial"};}
通过在类的定义这一层级声明构造函数的入参,取代一个单独的构造函数。入参的范围是类范围,且只在类的初始化时有效,与自动属性初始化器搭配起来好干活。
// Primary constructorclass Basket(string item, int price){ // Using primary constructor parameter values // to do auto property initialization. public string Item { get; } = item; public int Price { get; } = price;}
5,在函数调用时声明OUT参数
避免在调用函数之前还得专门定义一个out类型的参数:
public bool ConvertToIntegerAndCheckForGreaterThan10(string value){ if (int.TryParse(value, out int convertedValue) && convertedValue > 10) { return true; } return false;}
6,在Catch语句中用await
这样就可以在一个异步操作中处理异步过程中的异常了。
public async void Process(){ try { Processor processor = new Processor(); await processor.ProccessAsync(); } catch (Exception exception) { ExceptionLogger logger = new ExceptionLogger(); // Catch operation also can be aync now!! await logger.HandleExceptionAsync(exception); }}
可以选择不处理某些异常类型了。
public async void Process(){ try { DataProcessor processor = ne } // Catches and handles only non sql exceptions catch (Exception exception) if(exception.GetType() != typeof(SqlException)) { ExceptionLogger logger = new ExceptionLogger(); logger.HandleException(exception); }}
以减少重复代码,比如using Console这个静态类:
using System;// A static class inclusionusing System.Console;namespace CSharp6Demo{ class Program { static void Main(string[] args) { WriteLine("Console. is not required as it is included in the usings!"); } }}
9,字符串插入值
可以认为是String.Format的改进,可以不再用替代符了,而是直接用变量。
static void Main(string[] args){ string name = "Robert"; string car = "Audi"; WriteLine("\{name}'s favourite car is {car}!");}
10,Roslyn,新的编译器
开源,且有一个接口供扩展。可以认为是“像服务一样的编译器”。
0 0
- C# 6.0 新功能Top 10
- NIO新功能Top 10(下)
- NIO新功能Top 10(上)
- NIO新功能Top 10(下)
- NIO新功能Top 10(下)
- NIO新功能Top 10(上)
- C# 6.0 的新功能
- C# 6.0 的新功能
- C#新功能
- C#新功能
- C# 6.0 (C# vNext) 新功能之:Auto-Properties with Initializers
- C# 6.0 (C# vNext) 新功能之:Static Using Statements
- C# 6.0 (C# vNext) 新功能之:Declaration Expressions
- C# 6.0 (C# vNext) 新功能之:Null-Conditional Operator
- C# 6.0 (C# vNext) 新功能之:Nameof Expressions
- C# 6.0 (C# vNext) 新功能之:Event initializers
- C# 6.0 (C# vNext) 新功能之:Exception-Handling Improvements
- C# 6.0 (C# vNext) 新功能之:Numeric Literal Formats
- ios中点击地图控件MKMapView的某点获取该点的经纬度
- Android利用Fiddler进行网络数据抓包
- Yii DataProvider和CGridView的几个小提示
- 深入探讨 Java 类加载器
- week8- flask 框架学习
- C# 6.0 新功能Top 10
- frame,iframe,frameset用法和区别
- Redis与Memcached的区别
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- ORA-01034: ORACLE not available
- html学习笔记(四)——点击div实现网页页面跳转
- db2版本说明
- 15个nosql数据库
- org.apache.log4j.Logger详解