コードインスペクション:キャスト式はより簡単な型引数に置換できます。
このインスペクションは、ラムダ式内でキャストするのではなく、型引数を直接指定することで、型変換をより安全かつ明確にすることを提案しています。
以下の例では、ラムダ式内で 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) { /*...*/ }
}
2026 年 6 月 12 日