2017-02-08 10 views
1

私はF#についてよく分かりませんが、私は事前に書かれたF#コードの中でいくつかの変更を加えなければならないプロジェクト(C#上)に取り組んでいます。オブジェクトをpublicとして宣言し、それをローカルでF#

私はオブジェクトをpublic宣言し、このオブジェクトをローカルで使用したいと考えています(C#のように)。

class abc 
{ 
    public SubscriptionManager subman = null; // object of class SubscriptionManager 

    public void DoSomething() 
    { 
     subman = new SubscriptionManager(); 
    } 
} 

このようなものです。

F#に同じことをすることはできますか?

+3

オブジェクトを宣言していません。 'subman'は' abc'のフィールドです。 F#でクラスとフィールドを定義することもできます。 –

+0

F#でこれを行う方法を教えていただけますか? –

+6

あなたはこれをやりたい理由を説明できますか?変更可能なパブリックフィールドは、C#で気になるものではありません。この問題についてもっと詳しく説明すると、より良いアプローチがあると確信しています。 – TheInnerLight

答えて

4

コメントに記載されている人は、これが正しいことではない理由のいくつかがあります。私はダミーManagerクラスを含めました

[<AllowNullLiteral>] 
type Manager() = class end 

type abc() = 
    member val subman: Manager = null with get, set 
    member this.DoSomething() = this.subman <- Manager() 

だけのものをコンパイルするために:言われていることを、このコードは、あなたが後にしている大体何を与えるだろう。パブリックフィールドについての関連する議論もあります。hereには、少なくとも変更可能なフィールドが公開されていない解決策が記載されています。

関連する問題