ReSharper 2024.3 ヘルプ

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

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

ジェネリクスコンテキストでは、引数のキャストの代わりに明示的な型引数を使用できます。

interface IBase; class Derived : IBase; class Sample { public Sample() { var derivedInstance = new Derived(); Task<IBase> task = Task.FromResult((IBase)derivedInstance); } }
interface IBase; class Derived : IBase; class Sample { public Sample() { var derivedInstance = new Derived(); Task<IBase> task = Task.FromResult<IBase>(derivedInstance); } }

関連ページ:

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

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

コード検査: キャプチャーされたプライマリコンストラクターパラメーターは変更可能です

非レコード型のプライマリコンストラクターを使用すると、型定義がよりコンパクトになります。ただし、欠点として、プライマリコンストラクターパラメーターをインスタンスメンバー本体内に「キャプチャー」するという潜在的な問題が生じます。C# のすべてのパラメーター変数は変更可能です。つまり、どのインスタンスメンバーも初期化後に値を変更でき、パラメーターを読み取り専用に強制する構文はありません。このインスペクションは、「キャプチャーされた」プライマリコンストラクターパラメーターが実際にメンバーによって変更さ...