Delegate işleci (C# Başvurusu)

delegateİşleci, bir temsilci türüne dönüştürülebilen anonim bir yöntem oluşturur:

Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4));  // output: 7

Not

C# 3 ' ten başlayarak lambda ifadeleri anonim bir işlev oluşturmanın daha kısa ve açıklayıcı bir yolunu sağlar. Lambda ifadesi oluşturmak için => işlecini kullanın:

Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4));  // output: 7

Lambda ifadelerinin özellikleri hakkında daha fazla bilgi için örneğin, dış değişkenleri yakalama, bkz. lambda ifadeleri.

delegateİşlecini kullandığınızda parametre listesini atlayabilirsiniz. Bunu yaparsanız, oluşturulan anonim yöntem, aşağıdaki örnekte gösterildiği gibi, herhangi bir parametre listesiyle bir temsilci türüne dönüştürülebilir:

Action greet = delegate { Console.WriteLine("Hello!"); };
greet();

Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);

// Output:
// Hello!
// This is world!

Bu, lambda ifadeleri tarafından desteklenmeyen anonim yöntemlerin tek işlevsellikleridir. Diğer tüm durumlarda, bir lambda ifadesi satır içi kod yazmak için tercih edilen bir yoldur.

C# 9,0 ile başlayarak, yöntemi tarafından kullanılmayan anonim bir yöntemin iki veya daha fazla giriş parametresini belirtmek için atarsa ' u kullanabilirsiniz:

Func<int, int, int> constant = delegate (int _, int _) { return 42; };
Console.WriteLine(constant(3, 4));  // output: 42

Geriye dönük uyumluluk için, yalnızca tek bir parametre adlandırılmışsa _ , _ anonim bir yöntemde bu parametrenin adı olarak değerlendirilir.

C# 9,0 ' den itibaren, static anonim bir yöntemin bildiriminde değiştiricisini kullanabilirsiniz:

Func<int, int, int> sum = static delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(10, 4));  // output: 14

Statik anonim bir yöntem, kapsayan kapsamlardan yerel değişkenleri veya örnek durumunu yakalayabilir.

delegateBir temsilci türübildirmek için anahtar sözcüğünü de kullanabilirsiniz.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin anonim işlev ifadeleri bölümüne bakın.

Ayrıca bkz.