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. 二十六:Struts2 和 spring整合

    二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...

  2. maven仓库有jar包,还是找不到类

    开始,网上的所有方法都没用. 我用的eclipse-32位的,jdk也是.然后今天换了个sts和jdk.64位的.然后就没有那个问题了.

  3. android常见面试问题

    重:Listview中多个类型的条目如何处理?如果条目里边有button,会出现什么问题?如何处理?如果条目里边有checkbox会出现什么问题,如何解决?(这三个问题有过开发经验都应该遇到过). 在 ...

  4. MySQL的表的优化和列类型的选择

    列选择原则: 1:字段类型优先级 整型 > date,time  >  enum,char>varchar > blob 列的特点分析: 整型: 定长,没有国家/地区之分,没有 ...

  5. XidianOJ 1112 Too stupid

    题目描述 某天 light由于太富而且太帅遭到了歹徒的袭击,现在他遇到了n个歹徒,准备对light施行不法行为,虽然light身体强壮,但是毕竟只有一个人肯定打不过那么多歹徒,但是高智商的light觉 ...

  6. 为什么匿名内部类和局部内部类只能访问final变量

    因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类中的方法中的变量或参数只是方法的局部变量,这些变量或 ...

  7. LR录制https协议报证书错误,导航已阻止

    使用IE浏览器录制https协议报证书错误,导航已阻止,修改如下配置文件:

  8. .net该的帐

    1.web api 2.socket通信 3.NUnit单元测试 4.了解自动化测试各种工具

  9. Linux中安装和使用rz、sz命令

    安装命令: yum install lrzsz 从服务端发送文件到客户端: sz filename 从客户端上传文件到服务端: rz在弹出的框中选择文件,上传文件的用户和组是当前登录的用户 Secur ...

  10. Activity通信的第三方库——EventBus

    1.可以实现Activity之间高效的通信. 2.较好地实现了监听器和事件之间的解耦. (ps:本人觉得它实际上是一个简易的观察者模式.) 3.用法: //事件接收 public void onEve ...