ReSharper 2026.1 Help

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

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

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

public class Person { public string Name { get; private 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()}"; } }

ソリューション全体の分析 が有効化されている場合、ReSharper は自動プロパティの public setter の使用箇所も分析し、ソリューション内にそのような使用箇所が見つからない場合は get 専用とすることを提案します。

2026 年 6 月 12 日