ReSharper 2025.3 ヘルプ

コード検査: 明示的なデリゲート作成式は冗長です

たとえば、イベントハンドラーを追加した結果、冗長なデリゲートコンストラクター呼び出しが発生することがあります。

MyHandler += new EventHandler(MyMethod);

以下では、デリゲート変数 ValueChanged の型をその宣言から推論することができます。コードを短くするために、ReSharper は冗長な明示的なデリゲートのコンストラクター呼び出しを削除することを提案しています:

internal class EventTest { protected event EventHandler ValueChanged; protected EventTest() { ValueChanged += new EventHandler(HandleValueChanged); } private void HandleValueChanged(object sender, EventArgs e) { // ... } protected virtual void OnMyValueChanged() { ValueChanged?.Invoke(this, EventArgs.Empty); } }
internal class EventTest { protected event EventHandler ValueChanged; protected EventTest() { ValueChanged += HandleValueChanged; } private void HandleValueChanged(object sender, EventArgs e) { // ... } protected virtual void OnMyValueChanged() { ValueChanged?.Invoke(this, EventArgs.Empty); } }
2024 年 4 月 08 日

関連ページ:

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

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

コード検査: ラムダ式をメソッドグループに変換する

デリゲートに関して、メソッドグループはメソッドをデリゲート変数に割り当てる簡単な構文を提供します。この構文では、デリゲートのコンストラクターを明示的に呼び出す必要はありません。メソッドグループでは、メソッドのオーバーロードを使用できます。どのオーバーロードを呼び出すかは、デリゲートの署名によって決まります。匿名関数(式ラムダまたは匿名メソッド)が 1 つのメソッドのみで構成されている場合、それをメソッドグループに変換して、よりコンパクトな構文を実現し、ラムダの使用によるコンパイル時のオーバーヘッ...