簡體   English   中英

F#屬性與C#屬性

[英]F# properties vs. C# properties

在開發F#應用程序時,我具有一個包含Lazy<'T>類型的屬性的類型。

顯然,F#處理屬性的語法糖(與C#方法相反)的方式的一個有趣的副作用(對雙關語)是屬性的獲取器和設置器可能返回/接受不同的類型。 (至少,在我編寫利用此觀察結果的代碼時,Visual Studio並沒有抱怨。)

例如,這樣做對我來說是有利的:

let lazyValue = lazy 0

member this.Value
    with get () =
        lazyValue.Value
    and set _lazyVal =
        lazyValue <- _lazyVal

...這樣Value會返回一個int ,但僅接受 Lazy<int>

我想知道的是以這種方式做事的理論,慣用和實踐上的反對。 這是F#勢利小人抬起鼻子來的東西嗎? 是否有一些明顯違反此功能性編程規則(面向對象的實現)? 已經證明這種方法會在大規模應用中引起問題嗎? 如果是這樣,為什么/如何?

也許這是“ Visual Studio在抱怨您(您)編寫利用此觀察結果的代碼時沒有抱怨”的錯誤。 請參見在C#中使用F#選項類型

鏈接的問題注釋的答案中的注釋:

根據規范的第8.13.1節:如果屬性成員同時具有getter和setter,但都不是索引器,則getter和setter的簽名必須暗示相同的屬性類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM