您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: