F#3.0自动地实现属性
2012-05-24 11:54
197 查看
F#3.0实现了几个新的功能:Automatically Implemented Property(AIP).这简化了在类型定义里面的属性声明,但不仅仅是这些。
基本的AIP是,用更简明的语法,你就能定义一个属性。下面的MyProperty是一个AIP.
typeMyType() = class
memberval MyProperty = 0 with get, set
end
属性MyProperty将被翻译成像下面的东西:
typeMyClass() = class
valmutable internalMyProperty@ : int
memberthis.MyProperty with get() = this.MyProperty@
andset(v) = this.MyProperty@ < - v
....
end
从定义来看,你将看到一个back-end字段"MyProperty@"。最后,当调试程序的时候,MyProperty@显示在类定义里面。
这个定义有趣的部分是定义里面的0。它是back-end属性的初始值。如果你想引用一个在类定义外面的值,你可以像这样写:
let mutablea = 10
type MyType() =class
member val MyProperty = awith get, set
end
"a"值成为MyProperty的初始值。这并不意味着MyProperty是"a"的一个包装。
你可以使"a"不可变,代码仍然通过编译并工作。
有两个我必须和AIP放在一起的重要要点:
back-end字段 "MyProperty@"不用CompilerGenerateAttribute修饰。
对象表达式不支持AIP。
原文链接:http://apollo13cn.blogspot.com/2012/03/f-30-automatically-implemented-property.html
基本的AIP是,用更简明的语法,你就能定义一个属性。下面的MyProperty是一个AIP.
typeMyType() = class
memberval MyProperty = 0 with get, set
end
属性MyProperty将被翻译成像下面的东西:
typeMyClass() = class
valmutable internalMyProperty@ : int
memberthis.MyProperty with get() = this.MyProperty@
andset(v) = this.MyProperty@ < - v
....
end
从定义来看,你将看到一个back-end字段"MyProperty@"。最后,当调试程序的时候,MyProperty@显示在类定义里面。
这个定义有趣的部分是定义里面的0。它是back-end属性的初始值。如果你想引用一个在类定义外面的值,你可以像这样写:
let mutablea = 10
type MyType() =class
member val MyProperty = awith get, set
end
"a"值成为MyProperty的初始值。这并不意味着MyProperty是"a"的一个包装。
你可以使"a"不可变,代码仍然通过编译并工作。
有两个我必须和AIP放在一起的重要要点:
back-end字段 "MyProperty@"不用CompilerGenerateAttribute修饰。
对象表达式不支持AIP。
原文链接:http://apollo13cn.blogspot.com/2012/03/f-30-automatically-implemented-property.html
相关文章推荐
- F#3.0自动地实现属性
- android商品属性选择标签控件,可实现自动换行
- 自动解析复杂类的属性 实现归档或者进行序列化 反序列话的时候为每一个属性添加序列化方法的繁琐
- 认真CS丨计算只读属性示例、自动实现属性、静态属性
- jquery(javascript)自动序列编号和属性编号实现代码
- 自动实现的属性-Auto-Implemented Properties
- VB.NET自动实现的属性
- 属性的自动实现(Auto-Implemented Properties) - VS2005
- jquery(javascript)自动序列编号和属性编号实现代码
- 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能
- 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入
- Android使用自定义属性实现图片自动播放滚动的功能
- 用DBGrid控件配合数据集组件的Sort属性实现“点击标题栏自动排序功能”
- 属性的自动实现(Auto-Implemented Properties) - VS2005
- 实现WebForm下面的自动收集对象属性(与MVC下在的UpdateFrom一样)
- C# 3.0 新特性之 自动属性 --by winter
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- dubbo的Filter实现类属性自动注入(Autowired)无效
- 自动实现的属性(C# 编程指南)(摘自MSDN)
- 用DBGrid控件配合数据集组件的Sort属性实现“点击标题栏自动排序功能”。