interface (C# Başvurusu)

Arabirim bir sözleşme tanımlar. Bu class struct sözleşmeyi uygulayan veya uygulayanların arabirimde tanımlanan üyelerin uygulamasını sağlamaları gerekir. C# 8.0'dan başlayarak, bir arabirim üyeler için varsayılan bir uygulama tanımlayabilir. Ayrıca ortak işlevler static için tek bir uygulama sağlamak üzere üyeleri tanımlayabilir.

Aşağıdaki örnekte ImplementationClass sınıfının, parametresi olmayan ve SampleMethod'i döndüren void adlı bir yöntemi uygulaması gerekir.

Daha fazla bilgi ve örnekler için bkz. Arabirimler.

Örnek arabirim

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation:
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

Arabirim, bir ad alanının veya sınıfın üyesi olabilir. Arabirim bildirimi, aşağıdaki üyelerin bildirimlerini (herhangi bir uygulama olmadan imzalar) içerebilir:

Bu önceki üye bildirimleri genellikle bir gövde içermez. C# 8.0'dan itibaren, arabirim üyesi bir gövde bildirebilirsiniz. Bu, varsayılan uygulama olarak adlandırılan bir uygulamadır. Gövdeleri olan üyeler arabirimin geçersiz kılma uygulaması sağlamayen sınıflar ve yapılar için bir "varsayılan" uygulama sağlamalarına izin verilmektedir. Ayrıca, C# 8.0'dan itibaren bir arabirim şunları içerebilir:

Arabirimler örnek durumu içerenin. Statik alanlara artık izin verilirken, arabirimlerde örnek alanlarına izin verilmez. Gizli bir alanı örtülü olarak bildirseler de örnek otomatik özellikleri arabirimlerde desteklanmaz. Bu kuralın özellik bildirimleri üzerinde hafif bir etkisi vardır. Bir arabirim bildiriminde, aşağıdaki kod bir veya içinde yaptığı gibi otomatik uygulanan bir özellik class struct bildirmmektedir. Bunun yerine, varsayılan bir uygulamaya sahip olmayan ancak arabirimi uygulayan herhangi bir türde uygulanması gereken bir özellik bildirmektedir:

public interface INamed
{
  public string Name {get; set;}
}

Bir ara birim, bir veya daha fazla temel ara birimden devralınabilir. Bir arabirim, temel arabirimde uygulanan bir yöntemi geçersiz kılarsa, açık arabirim uygulama söz dizimlerini kullanması gerekir.

Bir temel tür listesi temel bir sınıfı ve ara birimleri içerdiğinde, temel sınıfın listede ilk sırada olması gerekir.

Bir ara birimi uygulayan bir sınıf, o ara birimin üyelerini açıkça uygulayabilir. Açıkça uygulanan bir üyeye, bir sınıfın örneği üzerinden erişilemez, yalnızca ara birimin bir örneği üzerinden erişilebilir. Ayrıca, varsayılan arabirim üyelerine yalnızca arabirimin bir örneği üzerinden erişilebilir.

Açık arabirim uygulaması hakkında daha fazla bilgi için bkz. Açık Arabirim Uygulaması.

Örnek arabirim uygulaması

Aşağıdaki örnek, ara birim uygulamasını gösterir. Bu örnekte, ara birim özellik bildirimini, sınıf ise uygulamayı içerir. IPoint öğesini uygulayan bir sınıfın herhangi bir örneği x ve y tamsayı özelliklerine sahiptir.

interface IPoint
{
   // Property signatures:
   int X
   {
      get;
      set;
   }

   int Y
   {
      get;
      set;
   }

   double Distance
   {
       get;
   }
}

class Point : IPoint
{
   // Constructor:
   public Point(int x, int y)
   {
      X = x;
      Y = y;
   }

   // Property implementation:
   public int X { get; set; }

   public int Y { get; set; }

   // Property implementation
   public double Distance =>
      Math.Sqrt(X * X + Y * Y);

}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.X, p.Y);
   }

   static void Main()
   {
      IPoint p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

C# dili belirtimi

Daha fazla bilgi için C# dil belirtimlerinin Arabirimler bölümüne ve Varsayılan arabirim üyeleri için özellik belirtimi - C# 8.0'a bakın

Ayrıca bkz.