コード検査: 可能性のある無限の継承
次のような状況
class B<U>
{
}
class A<T> : B<A<A<T>>>
{
}
事実上無限再帰型 B
を継承する型 A<T>
で終わる。結果として、アセンブリはコンパイルされますが、実行することはできません。試してみると、次のようなエラーメッセージが表示されます。
Could not load type ‘ConsoleApplication1.A{{1' from assembly 'ConsoleApplication1, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null' because it has recursive generic definition.
関連ページ:
![](https://resources.jetbrains.com/help/img/rider/2024.1/code_analysis_target_framework.png)
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...
![](https://pleiades.io/icons/rider.png)
コード検査: ダブルチェックロックパターンの誤った実装の可能性: チェックされたフィールドへの読み取りアクセス。| JetBrains Rider ドキュメント
次のコードを考えてみましょう。public class Foo { private static volatile Foo _instance; private static readonly object Padlock = new object(); public static Foo GetValue() { if (_instance != null) return _instance; lock (Padlock) { if (_instance != null) return _in...