C# Action Delegate

Action, system name space’i altında tanımlanan bir delegate türüdür. Action delegate bir değer döndürmemesi dışında Func delegate ile aynıdır. Başka bir deyişle, bir Action delegate, void tipine sahip bir metotla kullanılabilir.

Örneğin, aşağıdaki print delegate’ine bakın.

public delegate void Print(int val);

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}

static void Main(string[] args)
{           
    Print prnt = ConsolePrint;
    prnt(10);
}

Sonuç:

10

Yukarıdaki Print delegete’ini tanımlamak yerine bir Action delegate’i kullanabilirsiniz, örneğin:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}

static void Main(string[] args)
{
    Action<int> printActionDel = ConsolePrint;
    printActionDel(10);
}

new anahtar sözcüğünü kullanarak veya doğrudan bir metot atayarak bir Action delegate’ini başlatabilirsiniz:

Action<int> printActionDel = ConsolePrint;

//Or

Action<int> printActionDel = new Action<int>(ConsolePrint);

Bir Action delegate’i, farklı tiplerde en fazla 16 giriş parametresi alabilir.

Anonim bir metot, bir Action delegate de atanabilir, örneğin:

static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };

    printActionDel(10);
}

Sonuç:

10

Bir Lambda expression,bir Action delegate’iyle kullanılabilir:

static void Main(string[] args)
{

    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
}

Böylece, Action delegat’i türleriyle değer döndürmeyen herhangi bir metodu kullanabilirsiniz.

Özet

  • Delegeleri tanımlamak kolay ve hızlıdır.
  • Kodu kısa yapar.
  • Uygulama boyunca uyumlu tip.