代码检查:迭代变量可以声明为更具体的类型
请考虑以下类层次结构:
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? 实际上,我们可以轻松地将其更改为 子级 ,并且仍然获得相同的结果。 请注意,有一种情况是更通用的类型不能在不改变代码行为方式的情况下替换为派生类型。 如果您的迭代变量被声明为 动态 类型,则可能会出现这种情况。
最后修改日期: 2025年 9月 26日