ReSharper 2025.2 Help

代码检查:强制转换表达式可以替换为简化的类型参数

此检查建议通过直接指定类型参数而不是在 lambda 表达式中进行强制转换,使类型转换更安全、更清晰。

在下面的示例中,在 lambda 表达式中进行 obj 强制转换存在几个问题:它可能隐藏类型转换问题,使代码更难阅读和理解, DoWork<T>() 中的 T 类型参数可以由编译器推断,从而使强制转换变得不必要。

为避免这些问题,您可以去掉强制转换,并在方法调用时直接指定类型参数。

public interface IBase; public class Derived : IBase; public class Sample { void Test(IEnumerable<Derived> obj) { DoWork(() => (IEnumerable<IBase>) obj); } void DoWork<T>(Func<IEnumerable<T>> action) { /*...*/ } }
public interface IBase; public class Derived : IBase; public class Sample { void Test(IEnumerable<Derived> obj) { DoWork<IBase>(() => obj); } void DoWork<T>(Func<IEnumerable<T>> action) { /*...*/ } }
最后修改日期: 2025年 9月 27日