ReSharper 2024.3 ヘルプ

コード検査: キャスト式は簡略化された型引数に置き換えることができます

このインスペクションは、ラムダ式内でキャストするのではなく、型引数を直接指定することで、型変換をより安全かつ明確にすることを提案しています。

以下の例では、ラムダ式内で 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) { /*...*/ } }

関連ページ:

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

コード検査: キャスト式はラムダ戻り型に置き換えることができます

C# の C スタイルのキャスト式は、静的アップキャストと動的ダウンキャストの両方にすることができ、どちらも同じ構文を持ちます。型階層を念頭に置いておかないと、キャストが安全なアップキャストかランタイムダウンキャストかを判断する方法がありません。さらに、静的アップキャストは、リファクタリング中に誤って動的ダウンキャストに変わる可能性があります。これらの問題を回避し、コードの脆弱性を軽減するために、このインスペクションでは、可能な場合はキャストの代わりに明示的な型を使用することを提案しています。ア...