İfadeye sahip üyeler (C# programlama kılavuzu)

İfade gövdesi tanımları, bir üyenin uygulamasını çok kısa ve okunabilir bir şekilde sağlamayı sağlar. Yöntem veya özellik gibi desteklenen herhangi bir üyenin mantığı tek bir ifadeden oluşursa bir ifade gövdesi tanımı kullanabilirsiniz. İfade gövdesi tanımı aşağıdaki genel söz dizimlerine sahip:

member => expression;

burada ifadesi geçerli bir ifadedir.

C# 6'da yöntemler ve salt okunur özellikler için ifade gövdesi tanımları desteği tanıtıldı ve C# 7.0'da genişletildi. İfade gövdesi tanımları, aşağıdaki tabloda listelenen tür üyeleriyle birlikte kullanılabilir:

Üye Şu kadar destek...
Yöntem C# 6
Salt okunur özellik C# 6
Özellik C# 7.0
Oluşturucu C# 7.0
Sonlandırıcıyı C# 7.0
Dizin Oluşturucu C# 7.0

Yöntemler

İfadeye sahip bir yöntem, türünün yöntemin dönüş türüyle eşleşen bir değer döndüren tek bir ifadeden veya bazı işlemi gerçekleştiren void döndüren yöntemlerden oluşur. Örneğin, yöntemi geçersiz k kullanılan türler genellikle geçerli nesnenin dize ToString gösterimini döndüren tek bir ifade içerir.

Aşağıdaki örnek, yöntemini Person bir ifade gövdesi tanımıyla geçersiz kılmak için ToString bir sınıf tanımlar. Ayrıca konsola DisplayName bir ad görüntüleyen bir yöntem tanımlar. anahtar return sözcüğünün ifade gövdesi tanımında ToString kullanılmay olduğunu unutmayın.

using System;

public class Person
{
   public Person(string firstName, string lastName)
   {
      fname = firstName;
      lname = lastName;
   }

   private string fname;
   private string lname;

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

class Example
{
   static void Main()
   {
      Person p = new Person("Mandy", "Dejesus");
      Console.WriteLine(p);
      p.DisplayName();
   }
}

Daha fazla bilgi için bkz. Yöntemler (C# Programlama Kılavuzu).

Salt okunur özellikler

C# 6'dan başlayarak, salt okunur bir özellik uygulamak için ifade gövdesi tanımını kullanabilirsiniz. Bunu yapmak için aşağıdaki söz dizimlerini kullanın:

PropertyType PropertyName => expression;

Aşağıdaki örnek salt okunur özelliği özel alanın değerini döndüren bir ifade gövdesi tanımı Location olarak uygulanan bir sınıfı Name locationName tanımlar:

public class Location
{
   private string locationName;

   public Location(string name)
   {
      locationName = name;
   }

   public string Name => locationName;
}

Özellikler hakkında daha fazla bilgi için bkz. Özellikler (C# Programlama Kılavuzu).

Özellikler

C# 7.0'dan başlayarak, özellik ve erişimcileri uygulamak için ifade gövdesi get set tanımlarını kullanabilirsiniz. Aşağıdaki örnekte bunun nasıl gerçekleştirl olduğu gösterildi:

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   }
}

Özellikler hakkında daha fazla bilgi için bkz. Özellikler (C# Programlama Kılavuzu).

Oluşturucular

Bir oluşturucu için ifade gövdesi tanımı genellikle tek bir atama ifadesi veya oluşturucu bağımsız değişkenlerini kullanan veya örnek durumunu başlatan bir yöntem çağrısı içerir.

Aşağıdaki örnek, oluşturucusu Location adlı tek bir dize parametresine sahip olan bir sınıfı tanımlar. İfade gövdesi tanımı, bağımsız değişkeni özelliğine Name atar.

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   }
}

Daha fazla bilgi için bkz. Oluşturucular (C# Programlama Kılavuzu).

Sonlandırıcılar

Bir sonlandırıcı için ifade gövdesi tanımı genellikle, örneğin, unmanaged resources serbest deyimleri temizleme deyimlerini içerir.

Aşağıdaki örnek, sonlandırıcının çağrıldılarını belirtmek için ifade gövdesi tanımını kullanan bir sonlandırıcı tanımlar.

using System;

public class Destroyer
{
   public override string ToString() => GetType().Name;

   ~Destroyer() => Console.WriteLine($"The {ToString()} finalizer is executing.");
}

Daha fazla bilgi için bkz. Sonlandırıcılar (C# Programlama Kılavuzu).

Dizin Oluşturucular

Özelliklerde olduğu gibi, erişimci bir değer döndüren tek bir ifadeden oluşursa veya erişimci basit bir atama gerçekleştirirse, dizine sahip ve erişimci ifade get set gövdesi get set tanımlarını içerir.

Aşağıdaki örnek, bir dizi Sports spor adını içeren bir iç dizi içeren adlı bir sınıf String tanımlar. Hem dizin hem get de set erişimci ifade gövdesi tanımları olarak uygulanır.

using System;
using System.Collections.Generic;

public class Sports
{
   private string[] types = { "Baseball", "Basketball", "Football",
                              "Hockey", "Soccer", "Tennis",
                              "Volleyball" };

   public string this[int i]
   {
      get => types[i];
      set => types[i] = value;
   }
}

Daha fazla bilgi için bkz. Dizin Oluşturma (C# Programlama Kılavuzu).