博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#6新特性,让你的代码更干净
阅读量:5069 次
发布时间:2019-06-12

本文共 2055 字,大约阅读时间需要 6 分钟。

1、集合初始化器

//老语法,一个类想要初始化几个私有属性,那就得在构造函数上下功夫。 public class Post{    public DateTime DateCreated { get; private set; }     public List
Comments { get; private set; } public Post() { DateCreated = DateTime.Now; Comments = new List
(); } } public class Comment { } //用新特性,我们可以这样初始化私有属性,而不用再创建构造函数

  public class Post

  {
     public DateTime DateCreated { get; private set; } = DateTime.Now;
     public List<Comment> Comments { get; private set; } = new List<Comment>();
  }

 

  public class Comment

  {

  }

 

2、字典初始化器

    这个我倒是没发现有多么精简

var dictionary = new Dictionary
{ { "key1","value1"}, { "key2","value2"} };//新特性 var dictionary1 = new Dictionary
{ ["key1"]="value1", ["key2"]="value2" };

 

3、string.Format

     经常拼接字符串的对这个方法肯定不模式了,要么是string.Format,要么就是StringBuilder了。这也是我最新喜欢的一个新特性了。

Post post = new Post();post.Title = "Title";post.Content = "Content";//通常情况下我们都这么写string t1= string.Format("{0}_{1}", post.Title, post.Content);//C#6里我们可以这么写,后台引入了$,而且支持智能提示。 string  t2 = $"{post.Title}_{post.Content}";

 

4、空判断

    空判断我们也经常,C#6新特性也让新特性的代码更见简便

//老的语法,简单却繁琐。我就觉得很繁琐Post post = null;string title = "";if (post != null){      title = post.Title;}//C#6新特性一句代码搞定空判断title = post?.Title;

 空集合判断,这种场景我们在工作当中实在见的太多,从数据库中取出来的集合,空判断、空集合判断都会遇到。

Post post = null;List
posts = null; if (posts != null) { post = posts[0]; }//新特性,我们也是一句代码搞定。是不是很爽?post = posts?[0];

 

5、getter-only 初始化器

     这个我倒没觉得是新特性,官方给出的解释是当我们要创建一个只读自动属性时我们会这样定义如下

public class Post{      public int Votes{get;private set;}}//新特性用这种方式public class Post{     public int Votes{get;}}

 

6、方法体表达式化

     英语是Expression Bodied Members。其实我觉的也就是Lambda的延伸,也算不上新特性。

public class Post {               public int AddOld()        {            return 1 + 1;        }        //新特性还是用Lambda的语法而已        public int AddNew() => 1+1;    }

 

7、用static using来引用静态类的方法

     我完全没搞明白这个特性设计意图在哪里,本来静态方法直接调用一眼就能看出来哪个类的那个方法,现在让你用using static XXX引入类。然后直接调用其方法, 那代码不是自己写的,一眼还看不出这个方法隶属那个类。

转载于:https://www.cnblogs.com/tuyile006/p/6999602.html

你可能感兴趣的文章
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
关于indexOf的使用
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>