[解決済み] メソッドは静的化できるが、そうすべきなのか?
2022-03-24 07:14:30
質問
ReSharperは、ASP.NETページごとに静的化できる複数の関数を指摘するのが好きです。それらを静的化した場合、役に立つのでしょうか?それらを静的にし、ユーティリティクラスに移動させるべきでしょうか?
解決方法は?
静的メソッドとインスタンスメソッド
静的メンバとインスタンスメンバ
の「C# 言語仕様書」でその違いが説明されています。一般に、静的メソッドはインスタンスメソッドに比べて非常に小さな性能向上をもたらしますが、それはやや極端な状況においてのみです(詳しくは
この回答
を参照してください)。
FxCopまたはCode AnalysisのルールCA1822の状態。
メンバを static にした後、コンパイラはこれらのメンバに対して非仮想呼び出しサイトを生成します。 実行時に、各呼び出しに対して現在のオブジェクトポインタが 非NULL これによって、以下のような性能向上が期待できます。 パフォーマンス重視のコード 場合によっては 現在のオブジェクトのインスタンスは、正しさの問題を表しています。
ユーティリティクラス
設計上、理にかなっていない限り、ユーティリティクラスに移動させるべきではありません。静的メソッドが特定の型に関連している場合、たとえば
ToRadians(double degrees)
メソッドが角度を表すクラスに関連している場合、そのメソッドがその型の静的メンバとして存在することは理にかなっています(注:これはデモンストレーションのために複雑な例になっています)。
関連
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] Pythonの静的メソッド?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] 静的メソッドを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】プライベート静的メソッドを使用する利点