コードインスペクション:冗長な属性 [SetsRequiredMembers]
C# 11 で導入された [SetsRequiredMembers] 属性は、コンストラクターが型内のすべての必須メンバーを完全に初期化することを示すために使用されます。 必須メンバーは required 修飾子でマークされ、オブジェクトが完全に構築される前に必ず設定されなければなりません。 例えば:
public class ExampleClass
{
public required string Name { get; init; }
public required int Age { get; init; }
[SetsRequiredMembers]
public ExampleClass(string name, int age)
{
Name = name;
Age = age;
}
}
このインスペクションは、コンストラクターに適用された [SetsRequiredMembers] 属性が冗長であるケースを報告します。 これは、クラスに required メンバーがない場合、または基本コンストラクターがすでに必要なメンバーの初期化を満たしている場合に発生する可能性があります。
public class Example
{
[SetsRequiredMembers] // Redundant: No required members in the class
public Example() { }
}
public class Example
{
public Example() { }
}
冗長な [SetsRequiredMembers] 属性を削除すると、コードが簡潔になり、不必要な曖昧さが回避されます。
2026 年 6 月 12 日