ReSharper 2026.1 Help

コードインスペクション:自動プロパティは取得専用(非 private アクセシビリティ)にできます。

C# 6.0 以降、get 専用の自動プロパティを定義できます。これは readonly フィールド と同様に、コンストラクターまたはイニシャライザーでのみ初期化できます。 ReSharper は、コンストラクターまたはイニシャライザーから初期化され、書き込み用途のない自動プロパティに対して冗長な set アクセサーを削除するのに役立ちます。

下記の例ではイミュータブルクラスを想定しており、コンストラクターで Name プロパティの値が null 許容性についてチェックされた後は、追加の null チェックなしで安全に使用できます。 しかし、private setter ではプロパティが後から private メンバー内で変更されないことを保証できません。 そのため、プロパティを get 専用にして変更を防ぐことをおすすめします。

public class Person { public string Name { get; set; } // Auto-property can be made get-only public Person(string name) { Name = name ?? throw new ArgumentNullException(nameof(name)); } public override string ToString() { return $"NAME: {Name.ToUpper()}"; } }

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

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

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

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

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

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

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

2026 年 6 月 12 日