ReSharper 2025.2 Help

代码检查:迭代变量可以声明为更具体的类型

请考虑以下类层次结构:

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); }

然而,为什么我们的迭代变量应该是 人员? 实际上,我们可以轻松地将其更改为 子项 ,并且仍然获得相同的结果。 请注意,有一种情况是更通用的类型不能被派生类型替换,而不会改变代码的行为方式。 如果您的迭代变量被声明为 dynamic 类型,则可能会发生这种情况。

最后修改日期: 2025年 9月 27日