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: 模式匹配 ...
随机推荐
- html常用属性border-radius、linear-gradient怎么使用
html常用属性border-radius.linear-gradient怎么使用 一.总结 一句话总结: 1.border-radius: 8px 8px 8px 8px !important; 2 ...
- 【u216】A+B Problem(aplusb)
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 对于给定的A和B,求A+B的值. [输入格式] 输入文件aplusb.in的第1行为一个整数A,第2行 ...
- svn创建版本库和删除版本库
作者:朱金灿 来源:http://blog.csdn.net/clever101 svn创建版本库的做法:使用cd命令进入版本仓库的根目录,我的是E:\Repository,然后运行命令: svnad ...
- Access control differentiation in trusted computer system
A trusted computer system that offers Linux® compatibility and supports contemporary hardware speeds ...
- ant的condition任务
1.istrue isfalse:断言 真 假 <project name="testCondition"> <target name="test&qu ...
- URAL 1684. Jack's Last Word KMP
题目来源:URAL 1684. Jack's Last Word 题意:输入a b 把b分成若干段 每一段都是a的前缀 思路:b为主串 然后用a匹配b 记录到b的i位置最大匹配的长度 然后切割 切割的 ...
- WPF的两棵树与绑定
原文:WPF的两棵树与绑定 先建立测试基类 public class VisualPanel : FrameworkElement { protected VisualCollection Chi ...
- Java反射获取内部类有局限
这周接触到继承及修改具有包访问权的内部类内容,略梳理了下各种资料,发觉在包外修改内部类内容必须通过实例....... 网上关于这部分的内容比较少,参考了下这位的帖子:http://blog.csdn. ...
- 图像处理与计算机视觉的 topics
光学图像(optical image): the apparent reproduction of an object, formed by a lens or mirror system from ...
- ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...