コードインスペクション:反復変数はより具体的な型で宣言できます
次のようなクラス階層を考えます。
public class Person
{
public string Name { get; set; }
}
public class Child : Person
{
}
すべての子供の名前を表示するメソッドを書きたい場合は、次のように定義できます。
public void Print(IEnumerable<Child> children)
{
foreach (Person p in children)
Console.WriteLine(p.Name);
}
しかし、なぜ反復変数が Person である必要があるのでしょうか? 実際、これを Child に簡単に変更しても同じ結果が得られます。 より一般的な型が、コードの動作を変更せずに派生クラスに置き換えられない場合があることに注意してください。 このケースは、反復変数が dynamic 型で宣言されている場合に発生することがあります。
2026 年 6 月 12 日