Lambda ifadesi (=>) işleci bir lambda ifadesi tanımlar

Belirteç =>, iki biçimde desteklenir: lambda işleci olarak ve bir ifade gövdesi tanımında bir üye adı ile üye uygulaması arasında bir ayırıcı olarak.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

Lambda işleci

Lambda ifadelerinde lambda işleci => sol taraftaki giriş parametrelerini sağ taraftaki lambda gövdesinden ayırır.

Aşağıdaki örnek, lambda ifadelerinin kullanımını göstermek için yöntem söz dizimi ile LINQ özelliğini kullanır:

string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
  .Where(w => w.StartsWith("a"))
  .Min(w => w.Length);
Console.WriteLine(minimalLength);   // output: 5

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product);   // output: 280

Lambda ifadesinin giriş parametreleri derleme zamanında kesin olarak yazılır. Derleyici önceki örnekte olduğu gibi giriş parametresi türlerini çıkardığında, tür bildirimlerini atlayabilirsiniz. Giriş parametrelerinin türünü belirtmeniz gerekiyorsa, aşağıdaki örnekte gösterildiği gibi her parametrenin türünü belirtmeniz gerekir:

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280

Aşağıdaki örnekte giriş parametreleri olmadan lambda ifadesinin nasıl tanımlanacağı gösterilmektedir:

Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());

Daha fazla bilgi için bkz . Lambda ifadeleri.

İfade gövdesi tanımı

İfade gövdesi tanımı aşağıdaki genel söz dizimini kullanır:

member => expression;

Değer döndüren bir üye için, ifadenin sonucu üyenin dönüş türüne örtük olarak dönüştürülebilir olmalıdır. Bir void üye, oluşturucu, sonlandırıcı veya set, init, addveya remove erişimci için gövde bir deyim ifadesi olmalıdır. Deyim ifadesi atama, yöntem çağırma, nesne oluşturma, artırma veya azaltma işlemi veya await ifade olabilir. Varsa sonucu atılır.

Aşağıdaki örnekte bir yöntem için Person.ToString ifade gövdesi tanımı gösterilmektedir:

public override string ToString() => $"{fname} {lname}".Trim();

Bu, aşağıdaki yöntem tanımının kısa bir sürümüdür:

public override string ToString()
{
   return $"{fname} {lname}".Trim();
}

İfade gövdesi tanımlarını aşağıdaki üyeler için kullanabilirsiniz:

  • Yöntemler ve yerel işlevler: Değer döndüren bir üye biçimindedir T M() => expression;. Bir void üyenin formu void M() => statementExpression;vardır. Daha fazla bilgi için bkz. Yöntemler ve Yerel işlevler.
  • İşleçler: bir işleç biçimindedir public static T operator +(T left, T right) => expression;. Daha fazla bilgi için bkz . İşleç aşırı yüklemesi.
  • Özellikler ve dizin oluşturucular: Salt okunur bir özellik veya dizin oluşturucu, veya biçimindedir T P => expression;T this[int i] => expression;. Tek tek erişimciler için ifade gövdelerini de kullanabilirsiniz. Erişimci get , biçimindedir get => expression;. Bir set veya init erişimcisi veya formuna init => statementExpression;set => statementExpression; sahiptir. Daha fazla bilgi için bkz . Özellikler ve Dizin Oluşturucular.
  • Oluşturucular ve sonlandırıcılar: Bu üyeler veya ~C() => statementExpression;formuna C() => statementExpression; sahiptir. Daha fazla bilgi için bkz. Oluşturucular ve Sonlandırıcılar.
  • Olay erişimcileri: Bir add veya remove erişimcisi veya formuna remove => statementExpression;add => statementExpression; sahiptir. Daha fazla bilgi için bkz. Olaylar.

İşleç aşırı yüklenebilirliği

İşleci aşırı yükleyemezsiniz => .

C# dil belirtimi

Lambda işleci hakkında daha fazla bilgi için C# dil belirtimininAnonim işlev ifadeleri bölümüne bakın.

Ayrıca bakınız