what is C# – Delegates

190 Views

C# delegates are similar to pointers to functions, in C or C++. A delegate is a reference type variable that holds the reference to a method. The reference can be changed at runtime.

Delegates are especially used for implementing events and the call-back methods. All delegates are implicitly derived from the System.Delegate class.

Declaring Delegates
Delegate declaration determines the methods that can be referenced by the delegate. A delegate can refer to a method, which has the same signature as that of the delegate.

For example, consider a delegate −

public delegate int MyDelegate (string s);
The preceding delegate can be used to reference any method that has a single string parameter and returns an int type variable.

Syntax for delegate declaration is −

delegate Instantiating Delegates
Once a delegate type is declared, a delegate object must be created with the new keyword and be associated with a particular method. When creating a delegate, the argument passed to the new expression is written similar to a method call, but without the arguments to the method. For example −

public delegate void printString(string s);

printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);
Following example demonstrates declaration, instantiation, and use of a delegate that can be used to reference methods that take an integer parameter and returns an integer value.
using System;

delegate int NumberChanger(int n);
namespace DelegateAppl {

class TestDelegate {
static int num = 10;

public static int AddNum(int p) {
num += p;
return num;
}
public static int MultNum(int q) {
num *= q;
return num;
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
//create delegate instances
NumberChanger nc1 = new NumberChanger(AddNum);
NumberChanger nc2 = new NumberChanger(MultNum);

//calling the methods using the delegate objects
nc1(25);
Console.WriteLine(“Value of Num: {0}”, getNum());
nc2(5);
Console.WriteLine(“Value of Num: {0}”, getNum());
Console.ReadKey();
}
}
}
When the above code is compiled and executed, it produces the following result −

Value of Num: 35
Value of Num: 175
Multicasting of a Delegate
Delegate objects can be composed using the “+” operator. A composed delegate calls the two delegates it was composed from. Only delegates of the same type can be composed. The “-” operator can be used to remove a component delegate from a composed delegate.

Using this property of delegates you can create an invocation list of methods that will be called when a delegate is invoked. This is called multicasting of a delegate. The following program demonstrates multicasting of a delegate −

Live Demo
using System;

delegate int NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;

public static int AddNum(int p) {
num += p;
return num;
}
public static int MultNum(int q) {
num *= q;
return num;
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
//create delegate instances
NumberChanger nc;
NumberChanger nc1 = new NumberChanger(AddNum);
NumberChanger nc2 = new NumberChanger(MultNum);

nc = nc1;
nc += nc2;

//calling multicast
nc(5);
Console.WriteLine(“Value of Num: {0}”, getNum());
Console.ReadKey();
}
}
}
When the above code is compiled and executed, it produces the following result −

Value of Num: 75
Using Delegates
The following example demonstrates the use of delegate. The delegate printString can be used to reference method that takes a string as input and returns nothing.

We use this delegate to call two methods, the first prints the string to the console, and the second one prints it to a file −

Live Demo
using System;
using System.IO;

namespace DelegateAppl {

class PrintString {
static FileStream fs;
static StreamWriter sw;

// delegate declaration
public delegate void printString(string s);

// this method prints to the console
public static void WriteToScreen(string str) {
Console.WriteLine(“The String is: {0}”, str);
}

//this method prints to a file
public static void WriteToFile(string s) {
fs = new FileStream(“c:\\message.txt”,
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}

// this method takes the delegate as parameter and uses it to
// call the methods as required
public static void sendString(printString ps) {
ps(“Hello World”);
}

static void Main(string[] args) {
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);
sendString(ps1);
sendString(ps2);
Console.ReadKey();
}
}
}
When the above code is compiled and executed, it produces the following result −

The String is: Hello World

8 comments

  1. شركة تنظيف بالرياض,شركة تنظيف منازل بالرياض,
    شركة تنظيف فلل بالرياض,شركة تنظيف خزانات بجدة,شركة تنظيف بالدمام,شركة تنظيف خزانات
    بالرياض,شركة تنظيف بجدة,شركة تنظيف شقق بالرياض,شركة نظافة بالرياض,شركة تنظيف كنب بالرياض,شركة تنظيف موكيت بالرياض,شركة نظافة بجدة,شركة تنظيف خزانات بمكة,شركة تنظيف بالطائف,
    شركة تنظيف,شركة تنظيف مجالس بالرياض,شركةتنظيف مسابح بالرياض,شركه تنظيف بجده,شركة تنظيفشقق بجدة,
    افضل شركة تنظيف بالرياض,شركة تنظيف فلل بالدمام,شركات النظافة بجدة,شركة تنظيف خزانات بالطائف,شركة تنظيف خزانات بالدمام,شركات
    تنظيف بالرياض,تنظيف خزانات بجدة,تنظيف منازل بالرياض,شركة تنظيف بيوت
    بالرياض,تنظيف خزانات,شركة تنظيف منازل بالدمام,شركة تنظيف مساجد بالرياض,شركة تنظيف فلل بجدة,افضل شركة تنظيف منازل بالرياض,شركة
    نظافة,شركة تنظيف واجهات زجاج بالرياض,شركة تنظيف قصور بالرياض,
    افضل شركة مكافحة حشرات وفئران,شركة رش
    حشرات بالرياض,شركة مكافحة الصراصير بالرياض,شركة مبيدات حشرية بالرياض,شركة مكافحة البق بالرياض,مكافحة الحشرات بجدة,شركة مكافحة النمل الابيض بالرياض,
    رش مبيدات بالرياض,شركة مكافحة الحشرات بالرياض,شركة مكافحة حشرات بمكة,مكافحة حشرات بجدة,شركة
    مكافحة الحشرات بجدة,شركة مكافحة حشرات
    بالخبر,شركات مكافحة الحشرات,شركة مكافحة حشرات,مكافحة الحشرات بالرياض,مكافحة حشرات بالمدينة المنورة,شركة رش مبيدات,شركة
    مكافحة حشرات بالرياض,مكافحة الحشرات,مكافحة حشرات,شركة رش مبيدات بالرياض,شركة مكافحة حشرات بالدمام,شركةمكافحة حشرات
    بجدة,شركة مكافحة حشرات بالمدينة المنورة,رش مبيدات,شركة رش
    مبيدات بالدمام,شركة تسليك مجارى
    بالرياض,تسليك مجاري,شركة شفط بيارات,شركة تسليك مجاري شرق الرياض,شركة تسليك مجاري شمال الرياض,شركة تسليك مجاري غرب الرياض,شركة شفط بيارات بالرياض,افضل شركة
    تسليك مجارى بالرياض,تسليك مجاري الرياض,تسليك مجاري بالدمام,شركة تسليك مجاري,
    شركة تسليك مجارى بالدمام,شركات
    نقل الاثاث,نقل عفش,شركة نقل
    اثاث بالرياض,نقل عفش بالرياض,شركة نقل اثاث,نقل اثاث بالرياض,نقل
    اثاث,شركة نقل عفش بالرياض,ارخص شركة نقل اثاث بالرياض,ارقام نقل عفش بالرياض,اسعار شركات نقل العفش
    بالدمام,اسعار شركات نقل العفش بالرياض,افضل شركة نقل اثاث بالرياض,افضل شركة نقل
    عفش بالرياض,شركة نقل اثاث بالرياض رخيصه,شركة نقل اثاث بالرياض عماله فلبينيه,نقل اثاث
    بالدمام رخيص,نقل اثاث داخل الرياض,نقل اثاث شمال الرياض,نقل
    عفش الخبر,نقل عفش الرياض,نقل عفش بالجبيل,
    نقل عفش بالدمام,نقل عفش بالرياض رخيص,كشف تسربات المياه,
    كشف تسربات المياه بالرياض,شركة كشف تسربات المياه بالرياض,شركة
    كشف تسربات بالرياض,افضل شركة
    كشف تسربات المياه بالرياض,افضل شركة كشف تسربات المياه,فحص تسربات المياه,كشف تسرب المياه,شركات
    كشف تسرب المياه بالرياض,كشف
    تسربات المياة,كشف تسربات المياة بالرياض,كشف تسربات المياه الرياض,كشف تسربات,شركه كشف تسربات المياه بالرياض,شركه كشف تسربات المياه,أفضل شركة
    كشف تسربات المياه بالرياض,فحص
    تسربات المياه بالرياض,كشف تسربات المياه شرق الرياض,مؤسسة كشف تسربات المياه,شركة
    كشف تسربات المياه شرق الرياض,شركة كشف تسربات المياه شمال الرياض,
    عزل الاسطح,شركة عزل خزانات بالرياض,عزل مائي,شركة عزل اسطح بالرياض,
    عزل الاسطح من الرطوبة,عزل الاسطح من الحرارة,افضل شركة عزل مائي,شركات
    عزل مائي بالرياض,شركات العزل المائي بالرياض,عزل
    الاسطح من المياة,عزل الاسطح فوق البلاط,عزل الاسطح بالفوم,شراء الاثاث المستعمل بالرياض,شراء اثاث مستعمل بالرياض,ارقام شراء الاثاث المستعمل بالرياض,شراء الاثاث المستعمل,شراء اثاث مستعمل شرق الرياض,اثاث مستعمل بالرياض,شراء اثاث مستعمل
    شمال الرياض,شراء اثاث مستعمل بالرياض ونقل
    عفش,ارقام الي يشترون الاثاث المستعمل بالرياض,حقين الاثاث المستعمل بالرياض,شراء
    الاثاث المستعمل جنوب الرياض,محلات شراء الاثاث المستعمل
    بالرياض,نشتري الاثاث المستعمل بالرياض,شراء الاثاث
    المستعمل شرق الرياض,شركات الأثاث المستعمل بالرياض,شراء أثاث مستعمل غرب
    الرياض,شراء أثاث مستعمل شرق الرياض,شراء أثاث مستعمل شمال الرياض,شراء أثاث
    مستعمل جنوب الرياض,أرقام أصحاب محلات الأثاث المستعمل بالرياض,حد يشتري أثاث مستعمل,حد يشتري الأثاث المستعمل بالرياض,شراء مكيفات مستعملة,أرقام شراء مكيفات مستعملة بالرياض,أرقام شراء الأثاث
    المستعمل بالرياض,أثاث للبيع مستعمل الرياض,لبيع الأثاث المستعمل,بيع أثاث بالرياض,
    من يشتري أثاث مستعمل بالرياض,متخصصو شراء الأثاث المستعمل بالرياض,
    شراء أثاث مستعمل بالرياض ونقل عفش,شراء جميع الاثاث المستعمل بالرياض,ارقام الاثاث المستعمل بالرياض,محلات
    الاثاث المستعمل بشمال الرياض,شراء الاثاث المستعمل غرب الرياض,شركة شراء الاثاث المستعمل بالرياض,محلات الاثاث المستعمل بالرياض,شركة تنسيق حدائقبالرياض,تنسيق حدائق,تنسيق حدائق بالرياض,
    شركة تنسيق حدائق
    Great artiϲle.

  2. Heⅼlo! Do you know if they make any plugins too protect against hacҝeгs?
    I’m kinda paranoid about losing everything I’ve worked hard on. Any
    tips?

  3. You realy make it seem so easy with your presentation but I find this matter to be really something that I think I would never understand.
    It seems too comple and extremely broad for me. I am loking forward for your next
    post, I’ll ttry to get the hang of it!

  4. Green Coffee Turbo despesa concernir corroído todos os dias. http://ms1.taes.Ylc.edu.tw/userinfo.php?uid=1891673

Leave a Reply

Your email address will not be published.

Skip to toolbar