F#3.0自动地实现属性

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值