コード検査: 可能性のある無限の継承
次のような状況
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.
2024 年 2 月 11 日
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コード検査: ダブルチェックロックパターンの誤った実装の可能性: チェックされたフィールドへの読み取りアクセス。| ReSharper ドキュメント
次のコードを考えてみましょう。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...