1
私はコードを単純化しようとしました。それは以下の通りです。なぜF#クラスメンバーが呼び出されるたびに初期化されるのですか?
type myClass() =
member this.Member1 = MyCSharpNameSpace.MyClass("param")
let myObj = myClass()
let myVal = myObj.Member1.MyMethod()
MyClass
はC#クラスです。私がメンバーのメソッドを呼び出すと、それは再び初期化されます。私はそれがそうであるかどうか見るために次のことを試みたので。
type myClass() =
member this.Member1 =
printfn "Reinitializing"
MyCSharpNameSpace.MyClass("param")
なぜですか?私は、値を評価した後に関数を呼び出すと考えましたが、関数が評価されていないと呼ばれる2回目です。
非常に明確な説明:
また、自動的にバッキングストアを作成し
member val
を、使用することができます。ありがとうございました。 – ozgurletバインディングを使用する代わりにメンバーvalを使用すると、同じことになりますか? – ozgur
@ozgur 'member val'は自動的にバッキングストアを作成するので、これも解決策になります。 – TheInnerLight