f#3.0
實現了幾個新的功能:
automatically implemented property(aip).
這簡化了在型別定義裡面的屬性宣告,但不僅僅是這些。
基本的aip
是,用更簡明的語法,你就能定義乙個屬性。下面的
myproperty
是乙個aip.
typemytype() = class
member
val 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放在一起的重要要點:
VB和C 的自動實現屬性
c 在3.0版本中新增了自動實現屬性,但是當時visual basic還沒有與之匹配的特性。即將發布的.net 4.0版本中,vb在該領域迎頭趕上,但卻有所不同。c 中,自動實現屬性可以這樣編寫,如下所示 public string firstname visual basic則需要關鍵字prope...
C 程式設計之自動實現的屬性
在 c 3.0 及更高版本,當屬性訪問器中不需要任何其他邏輯時,自動實現的屬性會使屬性宣告更加簡潔。它們還允許客戶端 建立物件。當你宣告以下示例中所示的屬性時,編譯器將建立僅可以通過該屬性的 get 和 set 訪問器訪問的專用 匿名支援字段。下列示例演示乙個簡單的類,它具有某些自動實現的屬性 th...
RabbitMQ實現訂單30分鐘超時自動關閉
訂單30分鐘未支付,系統自動超時關閉有哪些實現方案?1.基於任務排程實現,效率是非常低,耗伺服器效能 2.基於redis過期key實現.使用者下單的時候,生成乙個令牌 有效期 30分鐘,存放到我們redis redis.set ordertoken orderid 下單時候存放到redis,並儲存i...