ReSharper 2026.1 Help

コードインスペクション:高負荷な null 比較

Unity.Object から派生したクラスは、 == および != 演算子の動作を変更する等価演算子を継承します。 これらの演算子は標準の .NET 参照等価性を実行しますが、一方の側を null と比較する場合、これらの演算子はネイティブコードを呼び出して、基となるネイティブエンジンオブジェクトがまだ有効かどうかを確認します。 この背景の詳細については、 基盤となる Unity エンジンオブジェクトの有効期間チェックの意図しないバイパスの可能性インスペクションの説明を参照してください。

ネイティブコードへの移行は、Unity がルックアップと検証を実行してスクリプト参照をネイティブ参照に変換するため、コストがかかる場合があります。 Unity オブジェクトと null を比較するコストは小さいものの、通常の C# クラスと比較するよりはるかに高いため、 パフォーマンスクリティカルな文脈内やループ内では避けるべきです。

このインスペクションは、パフォーマンスが重要なコンテキスト内で、 nullUnityEngine.Object サブクラスとの比較にパフォーマンス指標のハイライト表示を追加します。 また、以下の Alt+Enter コンテキストアクションも提供します。

  • ループの外側へ移動。 これにより、結果を保持するための変数が導入され、比較処理がループのスコープ外に移動されます。

  • スタートまたはウェイクに移動。 これにより、結果を保持するフィールドが導入され、比較が Start または Awake に移動します。

2026 年 6 月 12 日