Aracılığıyla paylaş


interface (C# Başvurusu)

Arabirim bir sözleşme tanımlar. Bu sözleşmeyi uygulayan herhangi classbir , recordveya struct arabiriminde tanımlanan üyelerin bir uygulamasını sağlamalıdır.

Arabirim, bir üye için varsayılan bir uygulama tanımlayabilir. Ayrıca, ortak işlevler için tek bir uygulama sağlamak üzere üyeler tanımlayabilir static .

Bir arabirim, bir uygulama türünün bildirilen üyeleri sağlaması gerektiğini bildirmek için veya static virtual üyelerini tanımlayabilirstatic abstract. Yöntemler genellikle static virtual bir uygulamanın bir dizi aşırı yüklenmiş işleç tanımlaması gerektiğini bildirir.

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.

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();
    }
}

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

Erişim değiştiricileri

Arabirim, bir ad alanının veya sınıfın üyesi olabilir. Ad alanında bildirilen ancak başka bir tür içinde iç içe yerleştirilmeyen en üst düzey arabirim veya publicolarak bildirilebilirinternal. Varsayılan değer: internal. Başka bir tür içinde bildirilen iç içe arabirim bildirimleri, herhangi bir erişim değiştirici kullanılarak bildirilebilir.

Uygulamasız arabirim üyeleri (soyut üyeler) örtük olarak public bulunur ve başka bir erişim değiştiricisi olamaz. Varsayılan uygulaması private arabirim üyeleri, hiçbir erişim değiştirici belirtilmediğinde varsayılan olarak olur, ancak herhangi bir erişim değiştirici (public, private, protectedveya internal) ile bildirilebilir.

Arabirim üyeleri

Arabirim bildirimi aşağıdaki üyeleri içerebilir:

Varsayılan arabirim üyeleri

Üye bildirimleri genellikle bir gövde içermez, ancak arabirim üyesi bir gövde bildirebilir. Bir arabirimdeki üye gövdeleri varsayılan uygulamadır. Gövdeleri olan üyeler arabirimin geçersiz kılma uygulaması sağlamayan sınıflar ve yapılar için "varsayılan" bir uygulama sağlamasına izin verir.

Önemli

Varsayılan arabirimler üyelerini eklemek, arabirimi uygulayan herhangi ref struct bir üyenin açık bildirimini eklemeye zorlar.

Statik soyut ve sanal üyeler

Bir arabirim, alanlar dışında tüm üye türleri için ve static virtual üyelerini bildirebilirstatic abstract. Arabirimler, uygulama türlerinin işleçleri veya diğer statik üyeleri tanımlaması gerektiğini bildirebilir. Bu özellik, genel algoritmaların sayı benzeri davranışı belirtmesini sağlar. .NET çalışma zamanındaki sayısal türlerdeki örnekleri görebilirsiniz, örneğin System.Numerics.INumber<TSelf>. Bu arabirimler, birçok sayısal tür tarafından uygulanan yaygın matematik işleçlerini tanımlar. Derleyicinin derleme zamanında ve static virtual yöntemlerine static abstract yapılan çağrıları çözümlemesi gerekir. static virtual Arabirimlerde bildirilen ve static abstract yöntemleri, sınıflarda bildirilen veya virtual yöntemlerine abstract benzer bir çalışma zamanı dağıtım mekanizmasına sahip değildir. Bunun yerine, derleyici derleme zamanında kullanılabilen tür bilgilerini kullanır. Bu nedenle, static virtual yöntemler neredeyse özel olarak genel arabirimlerde bildirilir. Ayrıca, veya yöntemlerini bildiren static virtual çoğu arabirim, tür parametrelerinden birinin bildirilen arabirimistatic abstract bildirir. Örneğin, INumber<T> arabirimi uygulaması Tgerektiğini bildirirINumber<T>. Derleyici, arabirim bildiriminde bildirilen yöntemlere ve işleçlere çağrıları çözümlemek için tür bağımsız değişkenini kullanır. Örneğin, int türü uygular INumber<int>. tür parametresi T tür bağımsız değişkenini intbelirtirse, static bildirilen int üyeler çağrılır. Alternatif olarak, tür bağımsız değişkeni olduğunda double , static tür üzerinde double bildirilen üyeler çağrılır.

Önemli

Arabirimlerde bildirilen ve static abstract yöntemleri için static virtual yöntem gönderimi, bir ifadenin derleme zamanı türü kullanılarak çözümlenir. bir ifadenin çalışma zamanı türü farklı bir derleme zamanı türünden türetilirse, temel (derleme zamanı) türündeki statik yöntemler çağrılır.

Bu özelliği, arabirimlerdeki statik soyut üyeler üzerinde öğreticiyle çalışarak deneyebilirsiniz.

Arabirim devralma

Arabirimler örnek durumu içeremez. Statik alanlara artık izin verilse de örnek alanlarına arabirimlerde izin verilmiyor. Örnek otomatik özellikleri , gizli bir alanı örtük olarak bildireceğinden arabirimlerde desteklenmez. Bu kuralın özellik bildirimleri üzerinde hafif bir etkisi vardır. Bir arabirim bildiriminde, aşağıdaki kod veya classiçinde olduğu gibi otomatik olarak uygulanan bir struct özellik bildirmez. Bunun yerine, varsayılan uygulaması olmayan ancak arabirimi uygulayan herhangi bir türde uygulanması gereken bir özellik bildirir:

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

Bir ara birim, bir veya daha fazla temel ara birimden devralınabilir. Bir arabirim başka bir arabirimden devraldığında, türetilmiş arabirimi uygulayan bir tür, aşağıdaki kodda gösterildiği gibi türetilmiş arabirimde bildirilen üyelere ek olarak temel arabirimlerdeki tüm üyeleri uygulamalıdır:

public interface I1
{
    void M1();
}

public interface I2 : I1
{
    void M2();
}

public class C : I2
{
    // implements I1.M1
    public void M1() { }
    // implements I2.M2
    public void M2() { }
}

Bir arabirim, temel arabirimde uygulanan bir yöntemi geçersiz kıldığında, açık arabirim uygulama söz dizimini kullanmalıdır.

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 üyeye bir sınıf örneği üzerinden erişilemiyor, ancak yalnızca arabirimin bir örneği üzerinden erişilebiliyor. Ayrıca, varsayılan arabirim üyelerine yalnızca arabirimin bir örneği aracılığıyla 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 belirtimininArabirimler bölümüne ve arabirimlerdeki statik soyut üyeler için özellik belirtimlerine bakın.

Ayrıca bkz.