CA1822: メンバーを static に設定します

TypeName

MarkMembersAsStatic

CheckId

CA1822

分類

Microsoft.Performance

互換性に影響する変更点

なし – 変更の内容にかかわらず、メンバーがアセンブリの外部で参照できない場合 なし - 単にメンバーを this キーワードが割り当てられたインスタンス メンバーに変更する場合

あり – メンバーをインスタンス メンバーから静的メンバーに変更し、そのメンバーがアセンブリの外部で参照できる場合

原因

インスタンス データにアクセスしないメンバーが、静的 (Visual Basic では共有) としてマークされていません。

規則の説明

インスタンス データにアクセスしない、またはインスタンス メソッドを呼び出さないメンバーは、静的 (Visual Basic では共有) としてマークできます。 メソッドを静的としてマークすると、コンパイラはこれらのメンバーに対する非仮想呼び出しサイトを出力します。 非仮想呼び出しサイトを出力することで、現在のオブジェクト ポインターが null ではないことを確認する各呼び出しの実行時のチェックが行われなくなります。 パフォーマンス重視のコードでは、これにより大きくパフォーマンスを向上できます。 場合によっては、現在のオブジェクト インスタンスに対するアクセスが失敗すると、正確性に関する問題が生じます。

違反の修正方法

メンバーを静的 (Visual Basic では共有) としてマークするか、必要に応じて、メソッドの本文で "this" または "Me" を使用します。

警告を抑制する状況

以前にリリース済みのコードで、互換性に影響が及ぶ場合は、この規則による警告を抑制しても安全です。

関連規則

CA1811: 呼び出されていないプライベート コードを使用しません

CA1812: インスタンス化されていない内部クラスを使用しないでください

CA1804: 使用されていないローカルを削除します