F 3 0自動地實現屬性

2022-07-04 21:00:12 字數 1014 閱讀 9307

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...