更新 : 2007 年 11 月
TypeName |
MarkMembersAsStatic |
CheckId |
CA1822 |
カテゴリ |
Microsoft.Performance |
互換性に影響する変更点 |
なし – 変更の内容にかかわらず、メンバがアセンブリの外部で参照できない場合なし - 単にメンバを this キーワードが割り当てられたインスタンス メンバに変更する場合 あり – メンバをインスタンス メンバから静的メンバに変更し、そのメンバがアセンブリの外部で参照できる場合 |
原因
インスタンス データにアクセスしないメンバが、静的 (Visual Basic では共有) としてマークされていません。
規則の説明
インスタンス データにアクセスしない、またはインスタンス メソッドを呼び出さないメンバは、静的 (Visual Basic では共有) としてマークできます。メソッドを静的としてマークすると、コンパイラはこれらのメンバに対する非仮想呼び出しサイトを出力します。非仮想呼び出しサイトを出力することで、現在のオブジェクト ポインタが null ではないことを確認する各呼び出しの実行時のチェックが行われなくなります。パフォーマンス重視のコードでは、これにより大きくパフォーマンスを向上できます。場合によっては、現在のオブジェクト インスタンスに対するアクセスが失敗すると、正確性に関する問題が生じます。
違反の修正方法
メンバを静的 (Visual Basic では共有) としてマークするか、必要に応じて、メソッドの本文で "this" または "Me" を使用します。
警告を抑制する状況
以前にリリース済みのコードで、互換性に影響が及ぶ場合は、この規則による警告を抑制しても安全です。