C#6新特性,让你的代码更干净

栏目: ASP.NET · 发布时间: 7年前

内容简介:C#6新特性,让你的代码更干净

1、集合初始化器

//老语法,一个类想要初始化几个私有属性,那就得在构造函数上下功夫。
public class Post
{
    public DateTime DateCreated { get; private set; } 
    public List<Comment> Comments { get; private set; } 

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

 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<string, string>
  {
       { "key1","value1"},
        { "key2","value2"}
   };

//新特性
 var dictionary1 = new Dictionary<string, string>
  {
         ["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<Post> 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引入类。然后直接调用其方法, 那代码不是自己写的,一眼还看不出这个方法隶属那个类。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

风吹江南之互联网金融

风吹江南之互联网金融

陈宇(江南愤青) / 东方出版社 / 2014-6-1 / 55元

随着中国互联网金融浪潮高涨,P2P、众筹、余额宝、微信支付等新生事物层出不穷,加之大数据等时髦概念助阵,简直是乱花渐欲迷人眼,令媒体兴奋,公众狂热。那么,互联网金融真的能“颠覆”传统金融吗?当互联网思维对撞传统金融观念,是互联网金融的一统天下,还是传统金融业的自我革新?究竟是谁动了金融业的奶酪? 本书作者早期试水创立具有互联网金融雏形的网站,后来成为互联网金融的资深投资人,基于其多年在该领域......一起来看看 《风吹江南之互联网金融》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具