コードインスペクション:メンバーは静的(共有)(private アクセス)にできます
以下のメソッド Print を考えてみましょう。
public class Foo
{
public void Test()
{
Print("John");
}
private void Print(string name)
{
Console.WriteLine("Hello, {0}!", name);
}
}
Public Class Foo
Public Sub Test()
Print("John")
End Sub
Private Sub Print(name As String)
Console.WriteLine("Hello, {0}!", name)
End Sub
End Class
JetBrains Rider によると、 Print はインスタンスの使用がなく、静的にすることができます。 しかし、意味は? 実際、静的メンバーは特定の状況下でわずかなパフォーマンス向上をもたらします。
Microsoft のドキュメントはこれについて何を言いたいのですか?
- インスタンスデータへアクセスせず、インスタンスメソッドを呼び出さないメンバーは静的(Visual Basic では Shared)にできます。 メソッドを静的にした後、コンパイラーはこれらのメンバーへの非仮想呼び出しサイトを生成します。 非仮想呼び出しサイトを生成すると、各呼び出し時ランタイムで現在のオブジェクトポインターが null でないことを確認するチェックを防ぐことができます。 これにより、パフォーマンス重視のコードで測定可能なパフォーマンス向上が得られます。 場合によっては、現在のオブジェクトインスタンスにアクセスできないことが正しさの問題となることがあります。
2026 年 6 月 12 日