C# 6 —— 属性
记录一下 C# 6 有关属性的语法糖实现,C# 6 涉及到属性的新特性主要有 2 个:自动属性初始化、只读属性赋值与读取。
自动属性初始化(Auto-property initializers)
C# 6
// Auto-property initializers
public int Auto { get; set; } = 5;
ILSpy 反编译后的代码
public int Auto { get; set; }
private Program()
{
this.<Auto>k__BackingField = 5;
base..ctor(); // 调用基类构造函数
}
只读属性赋值与读取
涉及到只读属性的赋值与读取的新特性大致有 3 种:
- Getter-only auto-properties (类似自动属性初始化)
- 在构造函数中赋值
- 表达式式的属性实现
Getter-only auto-properties
C# 6
// Getter-only auto-properties
public int ReadOnly { get; } = 10;
ILSpy 反编译后的代码
public int ReadOnly
{
[CompilerGenerated]
get
{
return this.<ReadOnly>k__BackingField;
}
}
private Program()
{
……
this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField 为只读属性
base..ctor();
}
在构造函数中赋值(Ctor assignment to getter-only autoprops)
C# 6
Program(int i)
{
// Getter-only setter in constructor
ReadOnly = i;
}
ILSpy 反编译后的代码
private Program(int i)
{
……
this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField 为只读字段
base..ctor();
this.<ReadOnly>k__BackingField = i;
}
表达式式的属性实现(Expression bodies on property-like function members)
C# 6
// Expression bodies on property-like function members
public int Expression => GetInt();
int GetInt()
{
return new Random(10).Next();
}
ILSpy 反编译后的代码
public int Expression
{
// 可知,该属性为只读属性
get
{
return this.GetInt();
}
}
C# 6 —— 属性的更多相关文章
- jqu
1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学 ...
- js-静态、原型、实例属性
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...
- 探究@property申明对象属性时copy与strong的区别
一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- CSS float 浮动属性
本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式:介绍文档流.浮动层以及float属性. 2. float:left :介绍float为 left 时的布局方式. 3. ...
- CSS Position 定位属性
本篇文章主要介绍元素的Position属性,此属性可以设置元素在页面的定位方式. 目录 1. 介绍 position:介绍position的值以及辅助属性. 2. position 定位方式:介绍po ...
- npm package.json属性详解
概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...
- JavaScript特性(attribute)、属性(property)和样式(style)
最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...
- 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...
- jQuery的属性
The Write Less , Do More ! jQuery的属性 1. attr(name|properties|key,value|fn) : 设置或返回被选元素的属性值 ①获取属性 < ...
随机推荐
- hdu 1269 迷宫城堡
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个 ...
- Ubuntu无值守安装mysql
1. 使用apt-get -d install 命令下载安装包, 其中-d表示下载不安装. 下载后的deb包放在/var/cache/apt/archives目录 2. 使用dpkg-preconfi ...
- Golang之AES/DES加密解密
AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...
- Javascript是一个事件驱动语言
面向原型这种说法我没在网上找到
- php匿名函数小示例
<?php //$fun = function($params){ // echo $params; //}; // //$fun('aa'); //例一 //在普通函数中定义一个匿名函数 // ...
- 单点登录 关于Cookie跨域的问题
public void ProcessRequest(HttpContext context) { HttpCookie cookie = new HttpCookie("name" ...
- online training
https://www.skillfeed.com/browse http://teamtreehouse.com/features http://www.pluralsight.com/ https ...
- Notes of the scrum meeting(12.5)
meeting time:18:00~18:30p.m.,December 5th,2013 meeting place:3号公寓一层 attendees: 顾育豪 ...
- hibernate tool连接oracle生成pojo和xml文件无法查询表解决办法
需要在hibernate的配置文件中增加 <property name="hibernate.default_schema">[username]</proper ...
- 【Sort Colors】cpp
题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same ...