コード検査: 明示的なデリゲート作成式は冗長です
たとえば、イベントハンドラーを追加した結果、冗長なデリゲートコンストラクター呼び出しが発生することがあります。
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 つのメソッドのみで構成されている場合、それをメソッドグループに変換して、よりコンパクトな構文を実現し、ラムダの使用によるコンパイル時のオーバーヘッ...