c# 6.0 学习笔记
refer :
http://www.cnblogs.com/yinrq/p/5600530.html
http://www.cnblogs.com/wolf-sun/p/5168217.html
http://www.cnblogs.com/wolf-sun/p/5172914.html
使用 vs2015 .net 4.6.1
1. nameof
public class Demo
{
public string name { get; set; }
}
string value = nameof(Demo.name); //"name"
好处 : 类似 enum 的作用, 当要批量替换属性名字时, 有智能提示, 这样就不怕漏换了.
2.null 处理
public class Demo
{
public string name { get; set; }
public int age { get; set; }
public void doSomeThing()
{ }
} Demo demo = null;
//before
if (demo != null) demo.doSomeThing();
//after
demo?.doSomeThing(); //before
string valuex = (demo != null) ? demo.name : "defaultValue";
//after
string valuey = demo?.name ?? "defaultValue";
// for int
int? age = demo?.age;
int age = (demo?age).GetValueOrDefault();
是 null 的话后面就不会继续跑, 会直接返回 null 值,
如果是 int 也会变成 nullable 哦,看上面的例子.
3. using static
namespace Project
{
public class Demo
{
public static void method()
{ }
}
} using static Project.Demo; //before
Demo.method();
//after
method();
好处 : 不需要写 ClassName
4. string interpolation
string value1 = "kelly";
string value2 = "penny";
//before
string value4 = string.Format("i love {0}, i have {1}", value1, value2);
//after
string value3 = $"i love {value1}, i hate {value2}"; //i love kelly, i hate penny
好处 : 早就好这样了, string.Format 和 "+ +" 一样乱丫, 不过还是 js 的 `` 更好
5. lambda in class method and properties
public class Demo
{
//before
public string getString1(string value)
{
return $"i love {value}";
}
//after
public string getString2(string value) => $"i love {value}"; //before
public string fullname1 {
get {
return getString1("kelly");
}
}
//after
public string fullname => getString1("kelly"); //this feature only support get
}
好处 : 好看一些吧
6. default value in class properties
//before
public class Demo1
{
public Demo1()
{
this.name = "value";
}
public string name { get; set; }
}
//after
public class Demo2
{
public string name { get; set; } = "value";
}
好处 : 美
7. 字典
//before
Dictionary<string, string> data1 = new Dictionary<string, string>
{
{ "key1" , "value" },
{ "key2" , "value" }
};
//after
Dictionary<string, string> data2 = new Dictionary<string, string>
{
["key1"] = "value",
["key2"] = "value",
};
好处 : 比较贴近正常的赋值 data2["ket1"] = "value";
c# 6.0 学习笔记的更多相关文章
- DirectX 总结和DirectX 9.0 学习笔记
转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...
- vue2.0学习笔记之路由(二)路由嵌套+动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue2.0学习笔记之路由(二)路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hdcms v5.7.0学习笔记
hdcms v5.7.0学习笔记 https://note.youdao.com/ynoteshare1/index.html?id=c404d63ac910eb15a440452f73d6a6db& ...
- dhtmlxgrid v3.0学习笔记
dhtmlxgrid v3.0学习笔记 分类: dhtmlx JavaScript2012-01-31 15:41 1744人阅读 评论(0) 收藏 举报 stylesheetdatecalendar ...
- OAuth 2.0学习笔记
文章目录 OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动. OAuth在"客户端&quo ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- RxJava2.0学习笔记2 2018年7月3日 周二
摘记: 1.map -- 转换 有些服务端的接口设计,会在返回的数据外层包裹一些额外信息,这些信息对于调试很有用,但本地显示是用不到的.使用 map() 可以把外层的格式剥掉,只留下本地会用到的核心 ...
- thinkphp5.0学习笔记
2019-11-11学习笔记 安装TP5.0 a)源代码包下载 在thinkphp官网下载(www.thinkphp.cn)下载 完整版本的TP5.0 b) composer 安装 切换到网站的根目录 ...
随机推荐
- jsonp突破同源策略,实现跨域访问请求
跨域访问问题,相信大家都有遇到过.这是一个很棘手的问题.不过道高一尺,魔高一丈,对于这类问题,总有解决问题的方案.最近我又接触到了这个问题,解决的途径是ajax+jsonp. 说到这个问题,不得不说一 ...
- 一分钟明确 VS manifest 原理
什么是vs 程序的manifest文件 manifest 是VS程序用来标明所依赖的side-by-side组建,如ATL, CRT等的清单. 为什么要有manifest文件 一台pc上,用一组建往往 ...
- 一起来写2048(160行python代码)
前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家,而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到20 ...
- 【转】Android:Touch事件分发机制
Touch事件分发中只有两个主角:ViewGroup和View.Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理. View在 ...
- C++标准库之 Lower_Bound, upper_Bound
关于二分查找,这绝对是最简单却又最难的实现了,其各种版本号能够參见http://blog.csdn.net/xuqingict/article/details/17335833 在C++的标准库中,便 ...
- Tomcat jdbc pool配置
Tomcat jdbc pool是apache在tomcat7版本中启用的新连接池,用它来解决以往DBCP无法解决的一些问题. Tomcat jdbc pool的优点: (1) tomcat j ...
- 大数据笔记05:大数据之Hadoop的HDFS(数据管理策略)
HDFS中数据管理与容错 1.数据块的放置 每个数据块3个副本,就像上面的数据库A一样,这是因为数据在传输过程中任何一个节点都有可能出现故障(没有办法,廉价机器就是这样的) ...
- javascript:void(0)知多少
在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶 ...
- 关于slideup和slidedown 鼠标多次滑过累积的动画效果
stop() 方法停止当前正在运行的动画 包括animation动画和slideup/slidedown动画 例如:鼠标经过一个元素时,执行一个slide动画,多次快速经过,不处理的话这个元素会保留累 ...
- Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
下列函数为实现过程,已经测试通过. /// <summary> /// Android时间戳转换为标准Datetime /// </summary> /// <param ...