从Mono 4.0观C# 6.0部分新特性
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部分新特性的更多相关文章
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- Android N(7.0) 被美翻的新特性!
Tamic 专注移动开发!更多文章请关注 Csdn: http://blog.csdn.net/sk719887916/article/details/52612444 $ http://www.ji ...
- 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 ...
- FineUI(专业版)v2.6.0即将支持的两个新特性!
特性1:以一挡三,将 160 行代码缩减为 60 行的技巧! 为了更新单元格的编辑值,我们需要下面三个函数同时上阵: GetModifiedDict:修改的单元格值 GetDeletedList:删除 ...
- Java SE 5.0(JDK 1.5)新特性
目录 自动装箱与拆箱 枚举(常用来设计单例模式) 静态导入static import 可变参数(Varargs) 内省(Introspector) 泛型(Generics) For-Each循环 ja ...
- c# 6.0新特性(二)
写在前面 上篇文章介绍了c#6.0的using static,Auto Property Initializers,Index Initializers新的特性,这篇文章将把剩下的几个学习一下. 原文 ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)
这一章大象将详细分析web层代码,以及使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 之前在使用Struts2实现MVC的注解时,是借助struts2-conventi ...
- C# 8.0的三个令人兴奋的新特性
C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...
随机推荐
- redis基础使用
redis分linux,window两个版本分支. redis在window下的使用先下载相关包.下载地址:https://github.com/MSOpenTech/redis/releases 下 ...
- makefile学习小结
=============2016/08/15================ 上午完成makefile的试验,缩短了代码量,现在make强大,有缺省的变量,能自己推导关系,不需要gcc –MM -M ...
- ASP.NET Web API系列教程目录
ASP.NET Web API系列教程目录 Introduction:What's This New Web API?引子:新的Web API是什么? Chapter 1: Getting Start ...
- 详解log4j2(上) - 从基础到实战
log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如果已经掌握 ...
- 从Unity引擎过度到Unreal4引擎(最终版)
原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎 ...
- .net正则表达式
1. "^-?[1-9]\\d*$",//整数 2. "^[1-9]\\d*$", //正整数 3. intege2:"^-[1-9]\\d*$&qu ...
- cef3 获得 谷歌浏览器 网页源码 哈哈
Get HTML Source from Chromium Embedded http://stackoverflow.com/questions/13324095/get-html-source-f ...
- 洛谷P1738 洛谷的文件夹
原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...
- [转载] 散列表(Hash Table)从理论到实用(上)
转载自:白话算法(6) 散列表(Hash Table)从理论到实用(上) 处理实际问题的一般数学方法是,首先提炼出问题的本质元素,然后把它看作一个比现实无限宽广的可能性系统,这个系统中的实质关系可以通 ...
- 使用 xlrd 模块实现对excel 的读取、excel转json 、excel 转 mysql insert 语句
#-*- coding:utf-8 -*- # 处理 excel 中的 area 为 Mysql insert 语句 import xlrd, json, codecs, os # data = xl ...