JetBrains Rider 2025.2 Help

代码检查:强制转换表达式可以替换为 lambda 返回类型

C# 中的 C 风格强制转换表达式既可以是静态向上转换,也可以是动态向下转换,两者具有相同的语法。 如果不考虑类型层次结构,就无法判断强制转换是安全的向上转换还是运行时的向下转换。 此外,在重构过程中,静态向上转换可能会意外地变成动态向下转换。 为避免这些问题并使代码更健壮,此检查建议在可能的情况下使用显式类型代替强制转换。

如果向上转换发生在 lambda 表达式体内,可以使用 lambda 表达式的返回注解来去除强制转换表达式:

interface IBase; interface IDerived : IBase; class Derived : IDerived; class Sample { public Sample() { var derivedInstance = new Derived(); IEnumerable<IDerived> derivedItems = [derivedInstance, derivedInstance]; var baseItems = derivedItems.Select(x => (IBase)x).ToList(); } }
interface IBase; interface IDerived : IBase; class Derived : IDerived; class Sample { public Sample() { var derivedInstance = new Derived(); IEnumerable<IDerived> derivedItems = [derivedInstance, derivedInstance]; var baseItems = derivedItems.Select(IBase (x) => x).ToList(); } }
最后修改日期: 2025年 9月 26日