コードインスペクション: 反復変数はより具体的な型で宣言できます
次のようなクラス階層を考えます。
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 日