C# でのオブジェクトセンダーの使用

Saad Aslam 2023年10月12日
  1. C# でのオブジェクトセンダーの概要
  2. C# でのオブジェクトセンダーの使用
C# でのオブジェクトセンダーの使用

この記事では、オブジェクトのセンダーとは何か、および C# での使用方法について説明します。

C# でのオブジェクトセンダーの概要

C# アプリケーションの開発とイベントの処理では、引数の 1つは C# オブジェクトのセンダーです。また、適切なオブジェクトをマップするようにハンドラーに指示するために使用されるイベントに対して発生したオブジェクトへの参照を確立するためのパラメーターです。

EventArgs クラスの助けを借りて、メソッドの引数を提供することができます。ただし、静的パラメータまたはイベントの場合、値は null になります。ユーザーがアプリケーションで必要とする場所でこれらのクラスを使用するには、EventArgs クラスとその関数 Object(){[ネイティブコード]} を使用してオブジェクトを作成します。

これらのクラスは、デフォルトのフレームワークから取得されます。

C# でのオブジェクトセンダーの使用

特定のクラスのメソッド、キーワード、および変数を使用してそのクラスのオブジェクトを生成する場合、オブジェクトは C# のアプリケーションのルートおよび親クラスであるため、これを実行できます。

using System;
using System.Web;

Access modifiers class name {
  Access modifiers return type function_name(object referencename(sender),
                                             EventArgs referencename) {
    // some C# code logic depends upon the user requirement
  }
}

上記のコードは、ある場所から別の場所にクラスオブジェクトを使用してアクセスするための基本的な構文を提供します。ハンドラーと EventArgs は、生成されたオブジェクトを処理します。

センダーは、C# 言語のジェネリックオブジェクトの引数の 1つであり、オブジェクトのインスタンスを構築するためにも使用されます。適切なアプリケーションイベントがこれをトリガーします。

イベントを処理し、オブジェクトを構築するメカニズム(イベントハンドラーと呼ばれる)は、そのイベントを処理するために使用されます。静的イベントを利用するかどうかにかかわらず、パラメーター値は常に​​null です。ただし、静的キーワードまたは動的キーワードを使用すると、値が異なります。

イベントに接続されているメソッドは、イベントハンドラーと呼ばれます。イベントハンドラーに含まれるコードは、イベントが発生したときに実行されます。

イベントを正しく処理できるように、各イベントハンドラーによって 2つのパラメーターが提供されます。イベントハンドラーは、クライアントの要求に依存するオブジェクトを実行するための主要な方法の 1つです。次に、アプリケーション内で発生する特定のイベントに応答して応答が発生します。

センダーは、オブジェクトのセンダー参照によってイベントがトリガーおよび実行されるため、イベントを開始するために使用できる主要なコントロールの 1つです。

UI イベントの 1つはボタンで、主にユーザーアクティビティとバックエンドタスクに使用されます。クライアントのデータは、センダーボタンをクリックするたびにフロントエンドとバックエンドの両方から評価され、イベントがトリガーされ、ユーザーの要件に従ってアクティビティが実行されます。

簡単に言えば、イベントを発生させたアイテムはセンダーと呼ばれます。イベントに関する追加の詳細は、EventArgs に含まれています。

using System;

public class exmp {
  public event EventHandler evnts {
    add {
      Console.WriteLine("Welcome Example Started");
    }
    remove {
      Console.WriteLine("provide inputs");
    }
  }
}

public class examp {
  public void demo() {
    exmp emp = new exmp();
    emp.evnts += third;
    emp.evnts -= third;
  }
  public void third(object snd, EventArgs er) {}
  public static void Main(string[] args) {
    examp examp = new examp();
    examp.demo();
    Console.ReadKey();
    Console.WriteLine("Your events are started and executed successfully");
  }
}

最初のパラメータ snd は、イベントを発生させたオブジェクトへの参照を提供します。上記の例では、文字 er で示される 2 番目のパラメーターは、処理されたイベントに固有のオブジェクトを送信します。

メモリにデータを追加および削除するには、イベントハンドラークラスのデフォルトキーワードである addremove を使用します。各クラスインスタンスとそのメソッドは、これらの値を計算して使用します。メソッドがパラメーターを受け入れる場合、そのインスタンスを使用してパラメーターを呼び出して渡します。

同じイベントハンドラーが、他のコントロールの同じイベントを処理する場合もあります。たとえば、フォームに RadioButton コントロールのコレクションが含まれている場合、Click イベントの単一のイベントハンドラーを作成し、各コントロールの Click イベントを単一のイベントハンドラーにバインドできます。

オブジェクトのセンダーとイベント引数を使用してイベントを処理する方法は他にもたくさんあります。たとえば、オブジェクトが形成され、メモリが割り当てられるとき、事前定義されたメソッド OnChanged()Add()、および Clear() は、ごみのコレクションをクリーンアップするために使用されます。不要な参照を削除したい場合は、デフォルトのメソッド clear()remove() を使用できます。

デフォルトのメソッドを使用して、同じオブジェクトセンダーとイベントハンドラーメカニズムを使用しながら、オブジェクト参照を作成して送信できます。2つの異なるイベントを生成し、それらのインスタンスを介して呼び出し、出力コンソールに表示される各インスタンスを生成できます。

オブジェクトセンダーを適切に使用するためのいくつかの規則と規制があります。また、ベストプラクティスについても以下で説明します。

  • オブジェクトセンダーのみが、インスタンスを含む EventArgs を含む場合、ユーザーアクションで実行されます。したがって、オブジェクトセンダーには、パラメーターとしてイベント引数が含まれている必要があります。
  • 大企業のシステムでは、オブジェクトの作成と割り当てに時間がかかり、参照の転送にも時間がかかります。
  • 同期を採用することにより、プロセススレッドのデッドロックを回避します。したがって、デッドロックを回避するために同期してみてください。
  • カプセル化しようとするメソッドシグネチャに正確に対応するシグネチャを持つデリゲートオブジェクトを作成します。
  • 署名がステップ 4 で作成したデリゲートオブジェクトの署名に対応するすべてのプロシージャを定義します。
  • カプセル化するメソッドは、作成するデリゲートオブジェクトにプラグインする必要があります。
  • デリゲートオブジェクトを使用して、含まれているメソッドを呼び出します。

C# には、コードをより複雑に使用し、コンポーネントのセットごとに多くの定義済みのキーワード、メソッド、および属性があるため、重複やコードの繰り返しを回避するための構文と規則があります。センダーは、そのオブジェクトと同じように、クラス参照と使用法のためにメソッドに渡される引数の 1つです。

著者: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn