前言

前几天看一个朋友的博客时,看他用到了C#6的特性,而6出来这么长时间还没有正儿八经看过它,今儿专门看了下新特性,说白了也不过是语法糖而已。但是用起来确实能让你的代码更加干净些。Let's try it.

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[];
} //新特性,我们也是一句代码搞定。是不是很爽?
post = posts?[];

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 + ;
} //新特性还是用Lambda的语法而已
public int AddNew() => +; }

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

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

总结

其中的string插值和空判断是我最喜欢的特性了,当然收集的可能不全,欢迎补充。   同时我很期待微软好好把ASP.NET Core开发下。做点对.net负责的产品。

最新文章

  1. js获取css中的样式
  2. No.021:Merge Two Sorted Lists
  3. iOS解析XML数据
  4. visual studio 引用lib
  5. wav文件格式分析(一)
  6. HttpResponse对象
  7. js判断ie11浏览器
  8. Win7下的本地网站发布
  9. c# 生成项目或重新生成项目时报“Project not selected to build for this solution configuration”之解决办法
  10. Silverlight闹钟
  11. android apk反编译
  12. MongoDB文档基本操作
  13. FineBI如何在web页面中嵌入式集成
  14. 关于js对象添加属性
  15. 转:为什么根据IP地址查询物理所在地,而不是mac地址?
  16. git常用命令及用法小计
  17. CSS兼容性详解
  18. 简述synchronized和java.util.concurrent.locks.Lock的异同?
  19. 获取JavaScript异步函数的返回值
  20. wordpress WP-PageNavi分页

热门文章

  1. 几个有趣的WEB设备API(二)
  2. 【探索】机器指令翻译成 JavaScript
  3. 深入理解JS 执行细节
  4. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
  5. 深入node之Transform
  6. 深入浅出Redis-redis哨兵集群
  7. 脑洞大开之采用HTML5+SignalR2.0(.Net)实现原生Web视频
  8. 反应器(Reactor)和主动器(Proactor)
  9. 中国CIO最关心的八大问题(下)
  10. 拦截UIViewController的popViewController事件