static
+ const
メンバーとstatic
クラスに関する2つの質問があります。static&constメンバ、静的クラスとボトルネック
1つの理由:すべての静的メンバーとconstメンバーを持ち、そのクラスを静的にしないクラスを宣言するのはなぜですか?
私は学習の練習としてリフレクターで.netコードを学習しています。私が勉強しているこのクラスのデザインは、FormsAuthentication
クラスです。すべてのメンバにstatic
またはconst
とマークされていますが、それ自身のクラスが表示されていますpublic sealed
クラス内の静的でない唯一のメンバは実装されていないデフォルトのコンストラクタです。なぜこのクラスにはpublic static sealed
とマークされていませんか?
私の2番目の質問は、FormsAuthentication
クラスのメンバーがstatic
と宣言されている理由です。私が理解しているように、多くのがアプリのAppDomain
で実行され、これらのすべてがHttpApplications
が同じFormsAuthentication
のクラスの静的メンバーを共有することがあります。
2つ:これはボトルネックの原因にはなりませんか?もしそうなら、それはなぜこのように設計されていますか?
*インスタンス化されたFormsAuthenticationインスタンスは存在しません。これは完全に静的なクラスであり、あなたが指摘したように、構文に先行していなければ、クラスに 'static'キーワードを与えたはずです。したがって、このクラスについては、定義上*のインスタンス*を意味するシングルトンという意味で考えるのは完全に不正確です。 –
@KirkWollトマト、たまと。概念的には同じことですが、静的メソッドと従来のシングルトンは単純に実装の詳細です。確かに、シングルトンパターンにはいくつかの利点があるかもしれませんが、それらを必要としなければ、静的でもうまく動作します。 – Andy
「実装の詳細」ではありません。 *定義*による "シングルトン"は*インスタンス*を必要とします - それがシングルトンと呼ばれる理由です。すなわち「単一の」インスタンスである。 –