Struct的默认构造函数##

struct Complex
{
public Int32 Re { get; set; }
public Int32 Im { get; set; }
public Complex()
{
Re = 0;
Im = 0;
}
}

C# 6.0以前的结构体是不能重载默认构造函数的。现在可以了。

自动属性赋值##

上面的代码还可以用类改写为

class Complex
{
public Int32 Re { get; set; } = 0;
public Int32 Im { get; set; } = 0;
}

连默认构造函数都不用写了,当然这个特性只适用于类。

方法表达式##

class Complex
{
public Int32 Re { get; set; } = 0;
public Int32 Im { get; set; } = 0;
public Double Modulus () => System.Math.Sqrt (Re * Re + Im * Im);
}

属性表达式##

上面的要调用方法来解决求模有点艹艹哒,所以换个姿势:

class Complex
{
public Double Re { get; set; } = 0;
public Double Im { get; set; } = 0;
public Double Modulus => System.Math.Sqrt (Re * Re + Im * Im);
}

以前得这样写:

class Complex
{
public Double Re { get; set; } = 0;
public Double Im { get; set; } = 0;
public Double Modulus {get { return System.Math.Sqrt (Re * Re + Im * Im); } }
}

哎哟,真特么冗长。

访问静态库##

获得F#引以为傲的System.Math只需要using一下

using static System.Math;

空引用检查##

(之前写错了,感谢aadilah指出)

如果有一个方法需要分割字符串,按照以前的办法应该是:

public static String sp (String args)
{
if (args == null)
return null;
return args.Split (',') [0];
}

需要在前面执行一下空引用检查,C# 6就可以简化一下:

public static String sp (String args)
{
return args?.Split (',') [0];
}

小魔术##

我们可以使用nameof来获取参数/变量的名称...

比如

public void SetRe (Double? value)
{
Re = value ?? 0.0;
Console.WriteLine (nameof (Re));
}

然后我们就能在终端/命令行内看到"Re"...

遗憾##

网上盛传的许多让人咋舌的方便用法诸如:内联out参数定义、IEnumerable的参数列表,都没能实现,其实成员索引原本有一个$符号来简化访问,但是M$表示这个将不会针对C#实现。

成员索引(旧版本特性,简化访问被否决)###

以类似成员的方式访问索引。

class SayHello{
public string this[String index]
{
get { return "Hello " + index; }
}
public void haha(){
var res = this["Microsoft"];
Console.WriteLine(res);
}
}

然后使用

SayHello sh = new SayHello ();
sh.haha ();

我们就能看到“Hello Microsoft”了...

暂时不知道这样写有什么好处...感觉没什么卵用...

最后##

上面这些特性在Mono 4.0里面已经可以正常使用了,但是Xamarin Studio似乎被这些新特性弄迷糊了...现在智能感知处于瘫痪状态。

诸位可以通过M$的Roslyn来体验这些东西。当然,完整新特性建议参阅Build大会的内容。

从Mono 4.0观C# 6.0部分新特性的更多相关文章

  1. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

  2. Android N(7.0) 被美翻的新特性!

    Tamic 专注移动开发!更多文章请关注 Csdn: http://blog.csdn.net/sk719887916/article/details/52612444 $ http://www.ji ...

  3. ASP.NET Core 2.0 Preview 1 中贴心的新特性

    西雅图时间5月10日,微软在 Build 2017 大会上发布了 ASP.NET Core 2.0 Preview 1 ( 详见 Announcing ASP.NET 2.0.0-Preview1 a ...

  4. FineUI(专业版)v2.6.0即将支持的两个新特性!

    特性1:以一挡三,将 160 行代码缩减为 60 行的技巧! 为了更新单元格的编辑值,我们需要下面三个函数同时上阵: GetModifiedDict:修改的单元格值 GetDeletedList:删除 ...

  5. Java SE 5.0(JDK 1.5)新特性

    目录 自动装箱与拆箱 枚举(常用来设计单例模式) 静态导入static import 可变参数(Varargs) 内省(Introspector) 泛型(Generics) For-Each循环 ja ...

  6. c# 6.0新特性(二)

    写在前面 上篇文章介绍了c#6.0的using static,Auto Property Initializers,Index Initializers新的特性,这篇文章将把剩下的几个学习一下. 原文 ...

  7. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  8. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)

    这一章大象将详细分析web层代码,以及使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能.     之前在使用Struts2实现MVC的注解时,是借助struts2-conventi ...

  9. C# 8.0的三个令人兴奋的新特性

    C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...

随机推荐

  1. jQuery MD5加密实现代码

    $(md("你想要加密的字符串")); md5插件下载地址:http://xiazai.jb51.net/201003/yuanma/jquery_md5.rar 下面是我的简单例 ...

  2. 使用Jquery解析xml的两种方法

    第一种方案(最稳妥): 先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象 var returnDataXml = parseXML(returnData); var p ...

  3. 搭建java,oracle,plsql开发环境

    一:安装jdk和jre; (1)有两种方法:1,从官网网址上安装:2,安装绿色版 (2)配置环境变量 在"系统变量"下进行如下配置: (1)新建->变量名:JAVA_HOME ...

  4. 《C++必知必会》学习笔记

    转载:http://dsqiu.iteye.com/blog/1734640 条款一 数据抽象 抽象数据设计遵循步骤:(1)为类型取一个描述性的名字.(2)列出类型所能执行的操作,不要忘了初始化(构造 ...

  5. json 特殊字符 javascript 特殊字符处理(转载)

    特殊字符以前都是禁止页面输入,这样就简单不容易出错,但最近需求要求能输入特殊字符整理出java返回json时特殊字符的转义(不转义会破坏json数据格式导致页面读取数据出错) Java代码 publi ...

  6. DetailsView的添加,修改,删除,查询

    前台代码: <div> <asp:DetailsView ID="gvDepart" runat="server" AutoGenerateR ...

  7. UI组件之Group

    当Group旋转或缩放时,它的孩子们正常绘制,并且Batch变换后正确的旋转或缩放. 绘制Group前,Batch flush使得变换可以设置.有很多Group时这将可能成为性能瓶颈.如果在一组演员不 ...

  8. step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework

    文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...

  9. VedioCaptureHelper

    void testFun() { chStringA strDevName; chStringA strDevID; chStringA useDevName = "WIN2 USB2.0 ...

  10. 让阿里云支持ipv6(其他多数VPS通用)

    https://www.tunnelbroker.net/tunnel_detail.php?tid=322922