ReSharper 2024.3 ヘルプ

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

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

アップキャストがラムダ式の本体内で発生する場合、ラムダ式の return アノテーションを使用してキャスト式を取り除くことができます。

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

関連ページ:

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

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

コード検査: キャスト式は明示的な変数型に置き換えることができます

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