Wednesday 12 April 2023

Delegates in C#

 In C#, a delegate is a type that represents a reference to a method with a particular signature. It is a way to encapsulate a method reference so that it can be passed as an argument to another method, returned as a value from a method, or stored as a field or property.

To define a delegate, you need to specify the delegate's signature, which consists of the return type and the parameter types of the method it represents. For example, the following code defines a delegate type called "MyDelegate" that represents a method with a void return type and two integer parameters:

csharp
delegate void MyDelegate(int x, int y);

You can then create an instance of the delegate type and assign it a reference to a method that matches its signature. For example:

arduino
void MyMethod(int a, int b) { Console.WriteLine("MyMethod: {0}, {1}", a, b); } MyDelegate del = new MyDelegate(MyMethod); del(1, 2); // calls MyMethod with arguments 1 and 2

Delegates are often used in event handling, where a method is called when an event occurs. For example, the following code defines a class with an event called "MyEvent" and a method called "OnMyEvent":

csharp
class MyClass { public event MyDelegate MyEvent; public void RaiseEvent() { if (MyEvent != null) { MyEvent(1, 2); } } public void OnMyEvent(int x, int y) { Console.WriteLine("OnMyEvent: {0}, {1}", x, y); } }

You can then subscribe to the event by creating an instance of the class and adding a method reference to the event delegate:

scss
MyClass obj = new MyClass(); obj.MyEvent += new MyDelegate(obj.OnMyEvent); obj.RaiseEvent(); // calls OnMyEvent with arguments 1 and 2

In this example, when the "RaiseEvent" method is called, it checks if there are any subscribers to the "MyEvent" event and calls the "MyDelegate" delegate with the specified arguments for each subscriber. In this case, the "OnMyEvent" method is called with arguments 1 and 2

No comments:

Post a Comment

Draw Circle in C#

 Here's an example program in C# that uses the `System.Drawing` namespace to draw a circle on a Windows Form: // Mohit Kumar Tyagi using...