2017-06-02 14 views
0

クラスを静的として宣言する必要があるかどうかを判断するのに苦労しています。 私は静的なフィールドは、各オブジェクトによって保持されている通常の非静的フィールドとは異なり、クラスから作成されたすべてのオブジェクト間で共有されるという考えを持っています。静的フィールド - クラスから作成されたインスタンスが1つだけの場合

次に、クラスから1つのオブジェクトしか作成されないことがわかっている場合(このようなケースが何度も見られたため)、静的フィールドの意味は何ですか? "静的"の定義が "すべてのインスタンス間で共有"されている場合、クラスから作成されたオブジェクトが1つしかない場合、静的フィールドは通常の非静的フィールドと同じ役割を果たしますか?

私の上司からC#を学ぶためにこの古いプロジェクトがありましたが、クラス内で静的と宣言されているフィールドがいくつかありますが、そのクラスから作成されたオブジェクトは1つしかありません。複数のインスタンスはありません。

+0

何も変わりません。クラスは、開発者が単一のインスタンスを作成するだけであることを知らない。あなたがシングルトンクラスを持っていることが分かっているなら、静的フィールドを使用する理由はありません –

答えて

0

staticは、ただ1つのインスタンスしかないので使用しないでください。既に述べたように、です。

何かが静的であるべきかどうかは、メンバーが内部の状態に依存しているかどうかによって決まります。つまり、このメンバーと組み合わせることができるいくつかのプロパティを設定する必要があります。したがって、インスタンスが1つだけ存在する場合でも、このインスタンスはその状態を定義するメンバーのセットを共有します。メンバーがその単一のインスタンスからすべての情報を省略できる場合にのみ、静的とマークする必要があります。

しかし、メンバーの一部をstaticにすると、多くのことが起こります。あなたがそのメンバーを保持しているあなたのクラスに多大な依存関係を作り出すと、かなり激しくなります。

関連する問題