C#6.0一些特性
1.自动属性初始化的改进
声明属性时可以直接进行初始化
public int id {get;set;}=10;
自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替,
把这个过程交给了系统,系统也为这个属性动态生成一个对应的字段。
下面代码是一个自己控制get和set方法的示例:
private int myVar; public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
这里最简单的逻辑。
演示:可以看到对属性赋的初值是有效的,并且正确的输出了。
2.静态类的引入
以控制台应用程序为例,以前在控制台输出内容时写的代码是:
Console.WriteLine("hello world");
这里的Console就是属于System命名空间下的一个静态类。
现在可以这样用,在引入命名空间的地方,把静态类引入。
using static System.Console;
这里需要注意的是,使用static的关键字,静态类的类名要求的全名。
在代码中就能这样用了:
WriteLine("世界,你好");
省去了静态类的开头。个人理解是为了代码的冗余。
3.string.Format的改进
这里直接更改了它的形式,已经不再使用string.Format这种形式了。
为了形成对比,下面是两个示例的比较。
原:
string name="喜欢";
string t1=string.Format("{0,10}",name);
对{0,10}的理解,0表示匹配第0个参数,10表示向左补全,使字符串长度不满10的时候左以空格补全。如果原字符串长度大于10,则这个参数将无效,如果是负数则表示右补全。
如果是{0:yyyy-mm-dd}以冒号隔开的表示以后面的格式显示数据。
新:
string name="喜欢";
string t1=$"{0,10}";
地方直接以"$"代替了string.Format,并且把参数写在{}大括号里,不再需要占位符。
4.集合初始化器
之前我一直是使用这样的方式初始化的,
Dictionary<string,int> dic=new Dictionary<string,int>{{"1",1},{"2",2}};
现在可以是:
Dictionary<string,int> dic=new Dictionary<string,int>{["1"]=1,["2"]=2};
个人感觉方便了一点点,在直观性方面也比较好看。
5.null表达式
之前只知道可空值类型,像int?这样的格式,正常情况下,值类型是不可以为null,只有引用类型才能为null;
string[] test=new string[]{"xihuan","xiaoai"};
int? length1=test[0]?.Length;
int? result=test[1]?.Length??
int d= "sfsd"?.Length??5;
??双问号操作符,左边为null则取值为右边,左边不为null则为取值为左边。
C#6.0一些特性的更多相关文章
- 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
来源:微信公众号CodeL 今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办 ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
- vertica 8.0 新特性
前言: <<line>> 表明在vertica 8.0文档中的title 正文: 1-支持平台 1.1-操作系统 <<Vertica Server and Ve ...
- Visual Studio 2015速递(1)——C#6.0新特性怎么用
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性
atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性 1.1. Servlet和JSP规范版本对应关系:1 1.2. Servlet2 ...
- 背水一战 Windows 10 (1) - C# 6.0 新特性
[源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...
- C# 7.0 新特性2: 本地方法
本文参考Roslyn项目中的Issue:#259. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
- C# 7.0 新特性1: 基于Tuple的“多”返回值方法
本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...
- C# 7.0 新特性3: 模式匹配
本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# ...
- C# 7.0 新特性4: 返回引用
本文参考Roslyn项目中的Issue:#118. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
随机推荐
- _Decoder_Interface_init xxxxxx in amrFileCodec.o
Undefined symbols for architecture arm64: "_Decoder_Interface_init", referenced from: Deco ...
- 【codeforces 776D】The Door Problem
[题目链接]:http://codeforces.com/contest/776/problem/D [题意] 每个门严格由两个开关控制; 按一下开关,这个开关所控制的门都会改变状态; 问你能不能使所 ...
- lucene 7.x 分词 TokenStream的使用及源码分析
一.使用步骤 //将一个字符串创建成token流,第一个参数---fiedName,是一种标志性参数,可以写空字符串,不建议用null,因为null对于IKAnalyzer会包错 TokenStrea ...
- C#中的SMTP配置Outlook.Com SMTP主机
如果你想以编程方式使用 Outlook.com或Gmail帐户作为 SMTP主机 发送电子邮件,也有为了得到这一切工作的几件事情要注意. 使用基本的System.Net.Mail库, ...
- WPF后台动画DoubleAnimation讲解
WPF后台动画,使用DoubleAnimation做的. 1.移动动画 需要参数(目标点离最上边的位置,目标点离最左边的位置,元素名称) Image mImage = new Image(); Flo ...
- aspnetboilerplate && .net core 使用原生sql
利用aspnetboilerplate提供的工具类IDbContextProvider private readonly IDbContextProvider<XXXDbContext> ...
- android反射组件 (一个)java 它们的定义annotation基础知识
它们的定义annotation它由三部分组成: 它们的定义annotation.使用annotation班.annotation的处理方法. 一.自己定义annotation 元注解包含下面: 1) ...
- WPF- 模拟触发Touch Events
原文:WPF- 模拟触发Touch Events 基于API: [DllImport("User32.dll")] public static extern bool Initia ...
- Angularjs html文本显示
<body ng-app="siteApp"> <div ng-controller="newsDetailController as vm" ...
- XF 标签页面
using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; [assembly: XamlCompilation (XamlCompila ...