是否可以在F#中声明一个抽象的自动实现属性?

Bru*_*ino 4 .net f# c#-to-f#

我正在尝试以下F#等效:

[C#]
public virtual int Property { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是这段代码(以及许多其他组合)不起作用:

[F#]
abstract member Id: int with get, set
default val this.Id = 123 with get, set
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 5

这在Dev11预览中是不可能的.


Ala*_*tts 1

好吧,查看关于 F# 属性的MSDN 文档,抽象属性中的这一行立即跳出:

或者,抽象可以仅意味着属性是虚拟的,在这种情况下,定义必须存在于同一个类中。

他们给出的示例语法是:

type Base1() =
   let mutable value = 10
   abstract Property1 : int with get, set
   default this.Property1 with get() = value and set(v : int) = value <- v
Run Code Online (Sandbox Code Playgroud)

现在我对 F# 不太熟悉,但我的猜测是你可以设置let mutable value = 10你的要求let mutable value = 123