我有一个F.类,它是从具有多个构造函数的.net类派生的。为了公开它们,我实现了一个没有主构造函数的类型。现在,我想添加一个静态字段。如何初始化静态字段?考虑一下:
type MyType =
inherit DotNetType
[<DefaultValue>] static val mutable private myStatic : int
new () = { inherit DotNetType() }
new (someArg:string) = { inherit DotNetType(someArg) }
现在,如何使用一种类型来初始化“myStatic”字段,如果使用该类型,该字段仅运行一次,而如果从未使用过该类型,则根本不运行?本质上,我需要一个C#静态构造函数块的等效项。
最佳答案
请参见F# spec,第8.6.3节“类中的其他对象构造函数”:
例子:
type MyType =
inherit DotNetType
[<DefaultValue>] static val mutable private myStatic : int
new () = { inherit DotNetType() } then MyType.myStatic <- 1
new (someArg:string) = { inherit DotNetType(someArg) }
static member Peek = MyType.myStatic
MyType.Peek |> printfn "%d" // prints 0
MyType() |> ignore
MyType.Peek |> printfn "%d" // prints 1
关于f# - 在F#中,如何在没有主构造函数的类型中初始化静态字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32419747/