C#6新特性,让你的代码更干净
前言
前几天看一个朋友的博客时,看他用到了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[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引入类。然后直接调用其方法, 那代码不是自己写的,一眼还看不出这个方法隶属那个类。
总结
其中的string插值和空判断是我最喜欢的特性了,当然收集的可能不全,欢迎补充。 同时我很期待微软好好把ASP.NET Core开发下。做点对.net负责的产品。
作者:sword-successful
出处:https://www.cnblogs.com/sword-successful/p/5532964.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
博客地址: | http://www.cnblogs.com/sword-successful/ |
博客版权: | 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构