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模拟在线模拟在线 模拟在线 ...
随机推荐
- 九度OJ 1179 阶乘(模拟)
题目1179:阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4526 解决:1315 题目描写叙述: 输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2! ...
- Android监听外部存储设备的状态(SD卡、U盘等等)
近期在项目中须要对外部存储设备的状态进行监听,所以整理了此笔记,以便日后查看. 外部存储设备的状态变化时发出的广播 对照不同状态下的广播 1. 插入外部SD卡时: 2. 移除外部SD卡时: 3. 连接 ...
- Java模拟POST表单提交HttpClient操作
public static void Login() { String url = "http://www.***.com/login"; PostMethod postMetho ...
- dvtm: 平铺式终端管理器 — LinuxTOY
dvtm: 平铺式终端管理器 — LinuxTOY LinuxTOY 是一个致力于提供 Linux 相关资讯的专题站点.如果您发现了好用好玩的 Linux 东东并愿意发扬自由.分享的精神,可以点击顶部 ...
- swfupload组件后台获取中文文件名称乱码的问题解决
问题描写叙述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名会乱码,试着用request. ...
- DL动态载入框架技术文档
DL动态载入框架技术文档 DL技术交流群:215680213 1. Android apk动态载入机制的研究 2. Android apk动态载入机制的研究(二):资源载入和activity生命周期管 ...
- MVC数组模型绑定
ASP.NET MVC数组模型绑定 在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type=& ...
- SecureCRT 连接虚拟机Linux
SecureCRT 连接虚拟机Linux 最近在学习linux,在学习中遇到了一些问题,现总结一下. 虚拟机我用的是VirtualBox,完美支持中文,可以在电脑中创建虚拟机环境,上手非常简单.具 ...
- uva 1510 - Neon Sign(计数)
题目链接:uva 1510 - Neon Sign 题目大意:给定n个点,随意三点不共线,而且两两点之间有一条线,给定线的颜色.问说有多少个三角形三边同色. 解题思路:对于每一个点.记录该点黑色边的数 ...
- ImageMagick的安装及使用
近期在使用ImageMagick处理酒店团购图片,写篇博客小小的总结下它的安装及使用方法.ImageMagick是一套功能强大且免费的图片处理开发包,能够用来读,写和处理多种格式的图片文件,总之非常强 ...