ReSharper 2026.1 Help

コードインスペクション:プロパティは init のみに設定できます(非 private アクセシビリティ)

このインスペクションは、コンストラクターでのみ初期化されるプロパティを識別し、その set アクセサーを init アクセサーに置き換えることを提案します。

C# 9.0 以降の init アクセサーを使用すると、以前よりも柔軟な方法でプロパティを不変にすることができます。 readonly フィールドや取得専用プロパティとは異なり、init 専用プロパティはオブジェクトの初期化中にのみ設定できます。 これにより、オブジェクトの作成後にオブジェクトの不変性が維持され、より安全でシンプルなコードが実現します。

public class Blog { public Blog(string name) { Name = name; } public string Name { get; set; } }
public class Blog { public Blog(string name) { Name = name; } public string Name { get; init; } }

ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。

  • 簡略化されたグローバル使用状況チェック: ReSharper オプション の コードインスペクション | 設定 ページで ソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示する を選択します Alt+R、O

  • ソリューション全体の分析: ReSharper オプション の コードインスペクション | 設定 ページで ソリューション全体の分析を有効化する を選択します Alt+R、O

報告されたアクセサーがソリューション内で直接使用されていない場合でも、間接的に (たとえばリフレクション経由で) 使用される場合や、単にパブリック API として設計されている場合もあります。 これらのすべてのケースでは、次のいずれかの方法で、アクセサーの使用状況チェックインスペクションを 抑制する必要があります。

  • 推奨される方法は、暗黙的に使用されるアクセサーを コードアノテーション属性で装飾することです。 この目的には、機能的に類似している [UsedImplicitly][PublicAPI] の 2 つの属性がありますが、これらを使用すると、アクセサーが実際にどのように使用されるかをチームメイトが理解できるようになります。

  • また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。 これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。

  • そして最後に、特定の使用チェックインスペクションを、 抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。

2026 年 6 月 12 日