C# 6.0 (C# vNext) 的新功能:Expression Bodied Functions and Properties
Expression Bodied Function 它可以用在:
- methods
- user-defined operators
- type conversions
- read-only properties
- indexers
看下面的样例:
public class RgbColor(int r, int g, int b)
{
public int Red { get; } = r;
public int Green { get; } = g;
public int Blue { get; } = b; public string ToHex() =>
string.Format("#{0:X2}{1:X2}{2:X2}", Red, Green, Blue); public static RgbColor operator - (RgbColor color) =>
new RgbColor(
color.Red ^ 0xFF,
color.Green ^ 0xFF,
color.Blue ^ 0xFF
);
}
用於「方法」的样例:
public string ToHex() => string.Format("#{0:X2}{1:X2}{2:X2}", Red, Green, Blue);
public override string ToString() => this.Name;
用於「user-defined operators」的样例:
public static RgbColor operator - (RgbColor color) =>
new RgbColor(
color.Red ^ 0xFF,
color.Green ^ 0xFF,
color.Blue ^ 0xFF
);
public static Complex operator +(Complex a, Complex b) => a.Add(b);
用於「read-only property」的样例:
特别注意,这是 Read Only Property 而不是 Field
public string ID => Guid.NewGuid().ToString();
又一个样例:
public class Point(int x, int y) {
public int X => x;
public int Y => y;
public double Dist => Math.Sqrt(x * x + y * y);
public Point Move(int dx, int dy) => new Point(x + dx, y + dy);
}
用於「type conversions」的样例:实现 string 和 Name 之间的隐性转换
public static implicit operator string(Name n) => n.First + " " + n.Last;
用於「indexers」的样例:
public Customer this[Id id] => store.LookupCustomer(id);
版权声明:本文博主原创文章。博客,未经同意不得转载。
C# 6.0 (C# vNext) 的新功能:Expression Bodied Functions and Properties的更多相关文章
- C# 6.0 (C# vNext) 的新功能:Exception-Handling Improvements
于 C# 6.0 包裹在异常处理的新功能,有两个方面的改进: 异步处理(async and await)能力 catch block 总结使用.于 C# 5.0 释放 async and await, ...
- 微信小程序0.11.122100版本新功能解析
微信小程序0.11.122100版本新功能解析 新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...
- Docker 1.12.0将要发布的新功能
Docker 1.12.0将要发布的新功能 导读 按计划,6/14 是1.12.0版本的 feature冻结 的日子,再有两个星期Docker 1.12.0也该发布了.这里列出来的新功能,都是已经合并 ...
- 【翻译】Ext JS 5.0.1 中的新功能
原文:What's New in Ext JS 5.0.1 今天,我们很高兴的宣布Ext JS 5.0.1发布了!此维护版本基于Sencha社区的反馈做了一些改进.下面让我们来了解一下这些改变. 可访 ...
- What's new in XAML of .NET 4.0( .NET 4.0中XAML的新功能 )
原文 What's new in XAML of .NET 4.0 What's new in XAML of .NET 4.0 Easy Object References with {x:Refe ...
- ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...
- Android O 正式版新功能
ref: Android O新特性和行为变更总结zzhttp://www.cnblogs.com/bluestorm/p/7148134.html Android O正式版带来了诸多新功能,如Tens ...
- 【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- 一张图看懂ANSYS17.0 流体 新功能与改进
一张图看懂ANSYS17.0 流体 新功能与改进 提交 我的留言 加载中 已留言 一张图看懂ANSYS17.0 流体 新功能与改进 原创2016-02-03ANSYS模拟在线模拟在线 模拟在线 ...
随机推荐
- Swift - 微调器或叫步进器(UIStepper)的用法
1,微调器(UIStepper)控件包含两个按钮“+”和“-”,让使用者可以依照自己的喜欢做数值上的调整. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...
- ORACLE RMAN介绍
本地连接: $ rman target / or $ rman target / nocatalog 远程连接: $ rman target sys/sys@sky RMAN命令执行方式: 1.单条 ...
- ios应用接入微信开放平台
前几天试了一下服务端接入微信公众平台,昨天又看了一下APP接入开放平台 开放平台和公众平台的差别 公众平台针对的是公众账号,除了提供管理后台之外.也开放了若干接口,让微信server和开发人员自己的应 ...
- IOS-UITextField-邮箱后缀联想赛
最近做的项目,有一个函数,百度了一下 结果没 要研究了一下. 当用户输入邮箱形式的账号时,输入完"@"符号后.联想出经常使用的邮箱 点击某一行,将改行代表邮箱自己主动输入到账号输入 ...
- Python学习入门基础教程(learning Python)--5.3 Python写文件基础
前边我们学习了一下Python下如何读取一个文件的基本操作,学会了read和readline两个函数,本节我们学习一下Python下写文件的基本操作方法. 这里仍然是举例来说明如何写文件.例子的功能是 ...
- pinyin4j的使用
pinyin4j的使用 pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j. import net.sourc ...
- Android真机网络adb联机调试初探
新项目是一个基于android4.2设备.刚拿到demo板时就对联机互调感兴趣了.处于以前在S3c2440上对linux的移植使用经验.心里猜测对于android设备应该也这样.所以通过搜索资料整理如 ...
- LIS(最长的序列)和LCS(最长公共子)总结
LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1 ...
- Android笔记之网络-基本了解
1.3个相关API接口 Android网络编程相关的API接口与相关用途例如以下图 2. 2种网络架构模式 B/S----浏览器/server端模式,通过应用层的HTTP协议通信,不须要特定clien ...
- SE 2014年4月5日
背景需求: 缺省情况下,Level-1路由器只将去往其它区域的报文发送到最近的Level-1-2路由器. 路由渗透使Level-1-2路由器将Level-2区域的路由信息发布到Level-1区域. 4 ...